ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
InnerDetector
InDetCalibAlgs
PixelCalibAlgs
src
PixelChargeInterpolationCalibration.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#ifndef PixelChargeInterpolationCalibration_cxx
6
#define PixelChargeInterpolationCalibration_cxx
7
8
9
10
#include <TDirectory.h>
11
12
#include "
PixelCalibAlgs/PixelChargeInterpolationCalibration.h
"
13
#include "
PixelCalibAlgs/PixelChargeInterpolationHistograms.h
"
14
#include "
PixelConditionsData/PixelChargeInterpolationParameters.h
"
15
#include "
PixelCalibAlgs/PixelChargeInterpolationPlot.h
"
16
#include <fstream>
17
18
namespace
PixelCalib
{
19
20
PixelChargeInterpolationCalibration::PixelChargeInterpolationCalibration
(
const
std::string& tag,
21
PixelChargeInterpolationParameters
&model):
22
m_DigitalCalibration
(0),
23
m_AnalogCalibration
(0),
24
m_plots
(0){
25
26
m_DigitalCalibration
=
new
PixelChargeInterpolationHistograms
(tag,model);
27
m_AnalogCalibration
=
new
PixelChargeInterpolationHistograms
(
"analog_"
+ tag,model);
28
29
}
30
32
33
PixelChargeInterpolationCalibration::~PixelChargeInterpolationCalibration
(){
34
35
delete
m_DigitalCalibration
;
m_DigitalCalibration
= 0;
36
delete
m_AnalogCalibration
;
m_AnalogCalibration
= 0;
37
delete
m_plots
;
m_plots
= 0;
38
39
}
40
42
43
void
PixelChargeInterpolationCalibration::Read
(TDirectory *histofile){
44
45
TDirectory *current = gDirectory;
46
TDirectory *globaldir = gDirectory;
47
if
(histofile != 0) globaldir = histofile;
48
49
globaldir->cd(
"ChargeInterpolation"
);
50
m_DigitalCalibration
->Read();
51
m_AnalogCalibration
->Read();
52
53
current->cd();
54
}
55
57
58
void
PixelChargeInterpolationCalibration::Write
(TDirectory *writedir){
59
60
TDirectory *current = gDirectory;
61
TDirectory *globaldir = gDirectory;
62
if
(writedir != 0) globaldir = writedir;
63
64
globaldir->mkdir(
"ChargeInterpolation"
)->cd();
65
m_DigitalCalibration
->Write();
66
m_AnalogCalibration
->Write();
67
m_plots
->Write();
68
69
current->cd();
70
71
}
72
74
75
void
PixelChargeInterpolationCalibration::Fill
(Int_t
DetType
, Double_t GeVTrkPt,
76
Double_t alpha, Double_t DeltaRow, Double_t digresphi,
77
Double_t resphi, Double_t OmegaPhi,
78
Double_t TrkEta, Double_t DeltaCol, Double_t digreseta,
79
Double_t reseta, Double_t OmegaEta){
80
81
// hack to uniform constants for all layers and for all disks
82
int
modifier = 0;
83
int
totlayers = 3;
84
if
(
DetType
== 0) totlayers = 1;
85
else
if
(
DetType
< 4) modifier = 1;
86
else
modifier = 4;
87
// fill with the same values for the relevant layers
88
for
(
int
iLayer = 0; iLayer < totlayers; iLayer++){
89
DetType
= iLayer + modifier;
90
m_DigitalCalibration
->Fill(
DetType
, GeVTrkPt,
91
TrkEta, DeltaCol, digreseta, OmegaEta,
92
alpha, DeltaRow, digresphi, OmegaPhi);
93
m_AnalogCalibration
->Fill(
DetType
, GeVTrkPt,
94
TrkEta, DeltaCol, reseta, OmegaEta,
95
alpha, DeltaRow, resphi, OmegaPhi);
96
}
97
98
}
99
101
102
int
PixelChargeInterpolationCalibration::Analyze
(
const
std::string& output,
103
std::vector<std::string> &reference_names){
104
105
PixelChargeInterpolationParameters
*DigitalParameters = 0;
106
PixelChargeInterpolationParameters
*AnalogParameters = 0;
107
108
std::ofstream logfile;
109
logfile.open((output +
".log"
).c_str());
110
logfile <<
"Log file for the pixel calibration fits."
<< std::endl;
111
112
DigitalParameters =
m_DigitalCalibration
->Analyze(logfile);
113
AnalogParameters =
m_AnalogCalibration
->Analyze(logfile);
114
115
logfile.close();
116
117
std::string name =
"PixelChargeInterpolationData-"
+ output;
118
size_t
pos = output.find(
"PixelOfflineReco"
);
119
if
(pos != std::string::npos){
120
name =
"PixelChargeInterpolationData"
121
+ output.substr(pos+16,std::string::npos);
122
}
123
DigitalParameters->
Print
(name);
124
name =
"Analog-"
+ name;
125
AnalogParameters->
Print
(name);
126
127
m_plots
=
new
PixelChargeInterpolationPlot
(*DigitalParameters);
128
m_plots
->AddReference(*AnalogParameters,
129
std::string(
"Fit on analog residual (should give 0)"
).c_str(),3,std::string(
"P"
));
130
for
(
unsigned
int
i = 0 ; i < reference_names.size() ; i++ ){
131
std::ifstream fin((reference_names[i]).c_str());
132
if
(!fin.fail()){
133
fin.close();
134
PixelChargeInterpolationParameters
*RefParameters =
135
new
PixelChargeInterpolationParameters
();
136
RefParameters->
Load
(reference_names[i]);
137
int
color
= 4+i;
138
if
(
color
== 5)
color
= 1;
139
m_plots
->AddReference(*RefParameters,reference_names[i],
color
,std::string(
"P"
));
140
delete
RefParameters;
141
}
142
}
143
m_plots
->Plot(output);
144
145
146
return
0;
147
}
148
149
150
}
// end of namespace PixelCalib
151
152
#endif
PixelChargeInterpolationCalibration.h
PixelChargeInterpolationHistograms.h
PixelChargeInterpolationParameters.h
PixelChargeInterpolationPlot.h
PixelCalib::PixelChargeInterpolationCalibration::m_DigitalCalibration
PixelChargeInterpolationHistograms * m_DigitalCalibration
Definition
PixelChargeInterpolationCalibration.h:42
PixelCalib::PixelChargeInterpolationCalibration::Write
void Write(TDirectory *writedir=0)
Definition
PixelChargeInterpolationCalibration.cxx:58
PixelCalib::PixelChargeInterpolationCalibration::~PixelChargeInterpolationCalibration
virtual ~PixelChargeInterpolationCalibration()
Definition
PixelChargeInterpolationCalibration.cxx:33
PixelCalib::PixelChargeInterpolationCalibration::m_plots
PixelChargeInterpolationPlot * m_plots
Definition
PixelChargeInterpolationCalibration.h:44
PixelCalib::PixelChargeInterpolationCalibration::Read
void Read(TDirectory *readdir=0)
Definition
PixelChargeInterpolationCalibration.cxx:43
PixelCalib::PixelChargeInterpolationCalibration::Analyze
int Analyze(const std::string &output, std::vector< std::string > &reference_names)
Definition
PixelChargeInterpolationCalibration.cxx:102
PixelCalib::PixelChargeInterpolationCalibration::PixelChargeInterpolationCalibration
PixelChargeInterpolationCalibration(const std::string &tag, PixelChargeInterpolationParameters ¶metersModel)
Definition
PixelChargeInterpolationCalibration.cxx:20
PixelCalib::PixelChargeInterpolationCalibration::Fill
void Fill(int DetType, double GeVTrkPt, double alpha, double DeltaRow, double digresphi, double resphi, double OmegaPhi, double TrkEta, double DeltaCol, double digreseta, double reseta, double OmegaEta)
Definition
PixelChargeInterpolationCalibration.cxx:75
PixelCalib::PixelChargeInterpolationCalibration::m_AnalogCalibration
PixelChargeInterpolationHistograms * m_AnalogCalibration
Definition
PixelChargeInterpolationCalibration.h:43
PixelCalib::PixelChargeInterpolationHistograms
Definition
PixelChargeInterpolationHistograms.h:20
PixelCalib::PixelChargeInterpolationParameters
Definition
PixelChargeInterpolationParameters.h:26
PixelCalib::PixelChargeInterpolationParameters::Load
void Load(const std::string &filename)
Definition
PixelChargeInterpolationParameters.cxx:493
PixelCalib::PixelChargeInterpolationParameters::Print
void Print(const std::string &filename) const
Definition
PixelChargeInterpolationParameters.cxx:421
PixelCalib::PixelChargeInterpolationPlot
Definition
PixelChargeInterpolationPlot.h:19
DetType
Definition
DetType.h:10
PixelCalib
Definition
PixelChargeInterpolationCalibration.h:14
color
Definition
jFexInputByteStreamTool.cxx:25
Generated on
for ATLAS Offline Software by
1.17.0