ATLAS Offline Software
Loading...
Searching...
No Matches
ITkPixelOfflineCalibData.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
6// ITkPixelOfflineCalibData.cxx, (c) ATLAS Detector software
8
10#include "Identifier/Identifier.h"
11
12#include <sstream>
13
14namespace ITk
15{
16
17 std::vector<float> PixelOfflineCalibData::getConstants() const {
18 const std::vector< std::array<float, ITk::PixelClusterErrorData::kNParam> > &constMap = m_clusterErrorData->getConstMap();
19 std::vector<float> constants;
20 constants.reserve( (ITk::PixelClusterErrorData::kNParam+1) * constMap.size() );
21 //
22 for(unsigned int id_hash=0; const std::array<float, ITk::PixelClusterErrorData::kNParam>& values : constMap){
23 long long pixelId = m_clusterErrorData->getIdentifier(id_hash++).get_compact();
24 constants.push_back(pixelId); // @TODO not necessariy lossless to convert an IdentifierHash into a float
25 constants.insert(constants.end(), values.begin(),values.end());
26 }
27 return constants;
28 }
29
31 m_clusterErrorData->print("ITkPixelClusterDump.txt");
32 }
33
34
35 void PixelOfflineCalibData::setConstants(const std::vector<float> &constants) {
36
37 int entry_size = 9;
38 int map_size = constants.size()/entry_size;
39
40 for(int i=0;i<map_size;i++){
41
42 long long pixelId_long = constants[i*entry_size];
43 std::ostringstream ss;
44 ss << "0x" << std::hex << pixelId_long;
45 std::string pixelId_str(ss.str());
46 Identifier pixelId;
47 pixelId.set(pixelId_str);
48
49 double period_phi = constants[i*entry_size + 1];
50 double period_sinheta = constants[i*entry_size + 2];
51 double delta_x_slope = constants[i*entry_size + 3];
52 double delta_x_offset = constants[i*entry_size + 4];
53 double delta_err_x = constants[i*entry_size + 5];
54 double delta_y_slope = constants[i*entry_size + 6];
55 double delta_y_offset = constants[i*entry_size + 7];
56 double delta_err_y = constants[i*entry_size + 8];
57
58 m_clusterErrorData->setDeltaError(m_clusterErrorData->getIdentifierHash(pixelId), period_phi, period_sinheta,
59 delta_x_slope, delta_x_offset, delta_err_x,
60 delta_y_slope, delta_y_offset, delta_err_y);
61
62 }
63 }
64
65} // end of namespace ITk
static Double_t ss
void setConstants(const std::vector< float > &constants)
std::unique_ptr< PixelClusterErrorData > m_clusterErrorData
std::vector< float > getConstants() const
void set(const std::string &id)
build from a string form - hexadecimal