ATLAS Offline Software
PixelChargeInterpolationCalibration.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef PixelChargeInterpolationCalibration_cxx
6 #define PixelChargeInterpolationCalibration_cxx
7 
8 #include <iostream>
9 #include <fstream>
10 #include <vector>
11 #include <string>
12 
13 #include <TDirectory.h>
14 
19 
20 namespace PixelCalib{
21 
24  m_DigitalCalibration(0),
25  m_AnalogCalibration(0),
26  m_plots(0){
27 
30 
31 }
32 
34 
36 
39  delete m_plots; m_plots = 0;
40 
41 }
42 
44 
45 void PixelChargeInterpolationCalibration::Read(TDirectory *histofile){
46 
47  TDirectory *current = gDirectory;
48  TDirectory *globaldir = gDirectory;
49  if(histofile != 0) globaldir = histofile;
50 
51  globaldir->cd("ChargeInterpolation");
54 
55  current->cd();
56 }
57 
59 
60 void PixelChargeInterpolationCalibration::Write(TDirectory *writedir){
61 
62  TDirectory *current = gDirectory;
63  TDirectory *globaldir = gDirectory;
64  if(writedir != 0) globaldir = writedir;
65 
66  globaldir->mkdir("ChargeInterpolation")->cd();
69  m_plots->Write();
70 
71  current->cd();
72 
73 }
74 
76 
77 void PixelChargeInterpolationCalibration::Fill(Int_t DetType, Double_t GeVTrkPt,
78  Double_t alpha, Double_t DeltaRow, Double_t digresphi,
79  Double_t resphi, Double_t OmegaPhi,
80  Double_t TrkEta, Double_t DeltaCol, Double_t digreseta,
81  Double_t reseta, Double_t OmegaEta){
82 
83  // hack to uniform constants for all layers and for all disks
84  int modifier = 0;
85  int totlayers = 3;
86  if(DetType == 0) totlayers = 1;
87  else if(DetType < 4) modifier = 1;
88  else modifier = 4;
89  // fill with the same values for the relevant layers
90  for(int iLayer = 0; iLayer < totlayers; iLayer++){
91  DetType = iLayer + modifier;
93  TrkEta, DeltaCol, digreseta, OmegaEta,
94  alpha, DeltaRow, digresphi, OmegaPhi);
95  m_AnalogCalibration->Fill(DetType, GeVTrkPt,
96  TrkEta, DeltaCol, reseta, OmegaEta,
97  alpha, DeltaRow, resphi, OmegaPhi);
98  }
99 
100 }
101 
103 
105  std::vector<std::string> &reference_names){
106 
107  PixelChargeInterpolationParameters *DigitalParameters = 0;
108  PixelChargeInterpolationParameters *AnalogParameters = 0;
109 
110  std::ofstream logfile;
111  logfile.open((output + ".log").c_str());
112  logfile << "Log file for the pixel calibration fits." << std::endl;
113 
114  DigitalParameters = m_DigitalCalibration->Analyze(logfile);
115  AnalogParameters = m_AnalogCalibration->Analyze(logfile);
116 
117  logfile.close();
118 
119  std::string name = "PixelChargeInterpolationData-" + output;
120  size_t pos = output.find("PixelOfflineReco");
121  if(pos != std::string::npos){
122  name = "PixelChargeInterpolationData"
123  + output.substr(pos+16,std::string::npos);
124  }
125  DigitalParameters->Print(name);
126  name = "Analog-" + name;
127  AnalogParameters->Print(name);
128 
129  m_plots = new PixelChargeInterpolationPlot(*DigitalParameters);
130  m_plots->AddReference(*AnalogParameters,
131  std::string("Fit on analog residual (should give 0)").c_str(),3,std::string("P"));
132  //std::cout << reference_names.size() << std::endl;
133  for(unsigned int i = 0 ; i < reference_names.size() ; i++ ){
134  //std::cout << reference_names[i] << std::endl;
135  std::ifstream fin((reference_names[i]).c_str());
136  if(!fin.fail()){
137  fin.close();
138  PixelChargeInterpolationParameters *RefParameters =
140  RefParameters->Load(reference_names[i]);
141  int color = 4+i;
142  if(color == 5) color = 1;
143  m_plots->AddReference(*RefParameters,reference_names[i],color,std::string("P"));
144  delete RefParameters;
145  }
146  }
147  m_plots->Plot(output);
148 
149 
150  return 0;
151 }
152 
153 
154 } // end of namespace PixelCalib
155 
156 #endif
PixelChargeInterpolationCalibration.h
fillPileUpNoiseLumi.current
current
Definition: fillPileUpNoiseLumi.py:52
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:77
PixelCalib::PixelChargeInterpolationCalibration::PixelChargeInterpolationCalibration
PixelChargeInterpolationCalibration(const std::string &tag, PixelChargeInterpolationParameters &parametersModel)
Definition: PixelChargeInterpolationCalibration.cxx:22
color
Definition: jFexInputByteStreamTool.cxx:25
PixelCalib::PixelChargeInterpolationHistograms
Definition: PixelChargeInterpolationHistograms.h:20
PixelCalib::PixelChargeInterpolationCalibration::m_plots
PixelChargeInterpolationPlot * m_plots
Definition: PixelChargeInterpolationCalibration.h:44
PixelCalib::PixelChargeInterpolationHistograms::Fill
int Fill(int DetType, double GeVTrkPt, double TrkEta, double DeltaCol, double reseta, double OmegaEta, double alpha, double DeltaRow, double resphi, double OmegaPhi)
Definition: PixelChargeInterpolationHistograms.cxx:150
PixelCalib::PixelChargeInterpolationParameters::Load
void Load(const std::string &filename)
Definition: PixelChargeInterpolationParameters.cxx:513
PixelCalib::PixelChargeInterpolationHistograms::Write
int Write()
Definition: PixelChargeInterpolationHistograms.cxx:214
PixelCalib::PixelChargeInterpolationHistograms::Analyze
PixelChargeInterpolationParameters * Analyze(std::ofstream &logfile)
Definition: PixelChargeInterpolationHistograms.cxx:232
PixelCalib::PixelChargeInterpolationPlot::AddReference
void AddReference(const PixelChargeInterpolationParameters &parameters, const std::string &title="Reference", int color=0, const std::string &drawopt="HIST")
Definition: PixelChargeInterpolationPlot.cxx:81
PixelCalib::PixelChargeInterpolationCalibration::Analyze
int Analyze(const std::string &output, std::vector< std::string > &reference_names)
Definition: PixelChargeInterpolationCalibration.cxx:104
PixelChargeInterpolationHistograms.h
PixelCalib::PixelChargeInterpolationCalibration::Read
void Read(TDirectory *readdir=0)
Definition: PixelChargeInterpolationCalibration.cxx:45
ParseInputs.gDirectory
gDirectory
Definition: Final2012/ParseInputs.py:133
lumiFormat.i
int i
Definition: lumiFormat.py:92
PixelCalib
Definition: PixelChargeInterpolationCalibration.h:14
PixelCalib::PixelChargeInterpolationCalibration::Write
void Write(TDirectory *writedir=0)
Definition: PixelChargeInterpolationCalibration.cxx:60
PixelChargeInterpolationParameters.h
merge.output
output
Definition: merge.py:17
PixelCalib::PixelChargeInterpolationCalibration::m_AnalogCalibration
PixelChargeInterpolationHistograms * m_AnalogCalibration
Definition: PixelChargeInterpolationCalibration.h:43
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
python.runDiffRootOnChanged.logfile
logfile
Definition: runDiffRootOnChanged.py:143
make_hlt_rep.modifier
string modifier
Definition: make_hlt_rep.py:14
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
PixelCalib::PixelChargeInterpolationParameters::Print
void Print(const std::string &filename) const
Definition: PixelChargeInterpolationParameters.cxx:441
PixelCalib::PixelChargeInterpolationPlot
Definition: PixelChargeInterpolationPlot.h:20
correlationModel::model
model
Definition: AsgElectronEfficiencyCorrectionTool.cxx:46
PixelCalib::PixelChargeInterpolationPlot::Write
void Write()
Definition: PixelChargeInterpolationPlot.cxx:456
compute_lumi.fin
fin
Definition: compute_lumi.py:19
PixelCalib::PixelChargeInterpolationParameters
Definition: PixelChargeInterpolationParameters.h:26
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:24
PixelChargeInterpolationPlot.h
PixelCalib::PixelChargeInterpolationPlot::Plot
void Plot(const std::string &output)
Definition: PixelChargeInterpolationPlot.cxx:99
DetType
Definition: DetType.h:10
PixelCalib::PixelChargeInterpolationHistograms::Read
int Read()
Definition: PixelChargeInterpolationHistograms.cxx:197
PixelCalib::PixelChargeInterpolationCalibration::m_DigitalCalibration
PixelChargeInterpolationHistograms * m_DigitalCalibration
Definition: PixelChargeInterpolationCalibration.h:42
PixelCalib::PixelChargeInterpolationCalibration::~PixelChargeInterpolationCalibration
virtual ~PixelChargeInterpolationCalibration()
Definition: PixelChargeInterpolationCalibration.cxx:35