ATLAS Offline Software
Loading...
Searching...
No Matches
Calib.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5//***********************************************************************************************
6// CalibInfo - Class to store the calibration information
7// ---------------------------------------
8// begin : 01 11 2023
9// email : sergi.rodriguez@cern.ch
10//***********************************************************************************************
11
12#ifndef PIXCALIB_H
13#define PIXCALIB_H
14
15#include "TKey.h"
16#include "TFile.h"
17#include "TH1F.h"
18#include "TF1.h"
19#include "TH2F.h"
20#include "TDirectoryFile.h"
21#include "TGraphErrors.h"
24
25#include <map>
26#include <iostream>
27#include <array>
28#include <cmath>
29
30
31
32
33class Calib {
34 public:
35 Calib (int whichPart, bool saveFile, const std::string & moduleName = "") {
36 m_whichPart = whichPart;
37
38 if(saveFile){
39 m_savefile = saveFile;
40 m_wFile = std::make_unique<TFile>((m_layers.at(whichPart)+".HIST.root").c_str(),"RECREATE");
41 }
42 if( not moduleName.empty() ){
43 m_runOneMOD = true;
44 m_testMOD = moduleName;
45 }
46 };
47 ~ Calib (){
48 if(m_savefile){
49 m_wFile->Write(0,TObject::kOverwrite);
50 m_wFile->Close();
51 }
52 };
53 bool fillThresholds(const pix::PixelMapping &pm, const std::string &inThrFile, std::map<unsigned int , std::vector<std::unique_ptr<CalibFrontEndInfo>> > &map_info);
54 bool fillTiming (const pix::PixelMapping &pm, const std::string &inTimFile, std::map<unsigned int , std::vector<std::unique_ptr<CalibFrontEndInfo>> > &map_info);
55 bool totFitting (const pix::PixelMapping &pm, const std::string &inTimFile, std::map<unsigned int , std::vector<std::unique_ptr<CalibFrontEndInfo>> > &map_info);
56
57 private:
58
59 bool m_savefile = false;
60 std::unique_ptr<TFile> m_wFile;
61
62 bool m_runOneMOD = false;
63 std::string m_testMOD = "";
64
65 static constexpr float m_chi_error = 0.05;
66
67 // privated vars
68 int m_whichPart = -1;
69 const std::array<std::string, 4> m_MODprefixes{"L0", "L1", "L2", "D"};
70 const std::array<std::string, 4> m_layers{"Blayer", "L1", "L2", "Disk"};
71
72 static constexpr int m_etaBins = 144;
73 static constexpr int m_phiBins = 320;
74
75 static constexpr int m_thrnbins = 200;
76 static constexpr float m_thrLo = 0.;
77 static constexpr float m_thrHi = 6000.;
78 static constexpr float m_sigLo = 0.;
79 static constexpr float m_sigHi = 500;
80
81 static constexpr int m_timnbins = 300;
82 static constexpr float m_timLo = 1000.;
83 static constexpr float m_timHi = 7000.;
84
85 static constexpr int m_totnbins = 255;
86 static constexpr float m_totLo = 0.;
87 static constexpr float m_totHi = 255.;
88 static constexpr int m_totsigNBins = 100;
89 static constexpr float m_totsigLo = 0.;
90 static constexpr float m_totsigHi = 1.;
91
92 // injected charges
93 static constexpr int m_nFE = 16;
94 static constexpr int m_ncharge = 21;
95 static constexpr std::array<float, m_ncharge> m_chargeArr{ 3000, 3500, 4000, 4500, 5000, 5500, 6000, 6500, 7000, 7500, 8000, 8500, 9000, 9500, 10000, 12000, 14000, 16000, 18000, 20000, 25000};
96 static constexpr std::array<float, m_ncharge> m_chargeErrArr{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
97
98 // injection starting point for fit
99 static constexpr int m_qthresh = 5;
100
101 // privated functions
102 int chipId(int iphi, int ieta);
103 int pixelType(int iphi, int ieta, bool isForTOT = false);
104 TIter getRodIterator(const TFile & inputFile);
105 TIter getModuleIterator( TDirectoryFile* rodDir);
106 TH2F* get2DHistogramFromPath( TDirectoryFile* rodDir, const std::string & moduleName, const std::string & histName, int charge=-1);
107 bool moduleInPart(const std::string & modName);
108 std::vector<float> getParams(const TF1 *f, unsigned int params);
109 std::vector<float> getParams_quality(const TF1 *f);
110 bool reFit_normalPix(std::vector<float> &params, std::vector<float> &q, std::vector<float> &qerr, std::vector<float> &tot, std::vector<float> &toterr, std::vector<float> &sig, std::vector<float> &sigerr, const unsigned int fe);
111 void graphTitles(const std::unique_ptr<TGraphErrors> &graph, const std::string &name, const std::string &Yname);
112
113 class funcTot {
114 public:
115 // use constructor to customize your function object
116 double operator() (double *x, double *par) {
117 double ret = 9.9e10;
118 double num = x[0]+par[1];
119 double denom = x[0]+par[2];
120 if (denom != 0.0) ret = par[0]*(num/denom);
121 return ret;
122 }
123 };
124
125 class funcDisp {
126 public:
127 // use constructor to customize your function object
128 double operator() (double *x, double *par) {
129 double ret = 9.9e10;
130 ret = par[0]+par[1]*x[0];
131 return ret;
132 }
133 };
134
135};
136
137#endif
double charge(const T &p)
Definition AtlasPID.h:997
#define x
double operator()(double *x, double *par)
Definition Calib.h:128
double operator()(double *x, double *par)
Definition Calib.h:116
bool m_runOneMOD
Definition Calib.h:62
static constexpr int m_qthresh
Definition Calib.h:99
bool totFitting(const pix::PixelMapping &pm, const std::string &inTimFile, std::map< unsigned int, std::vector< std::unique_ptr< CalibFrontEndInfo > > > &map_info)
Definition Calib.cxx:16
bool m_savefile
Definition Calib.h:59
static constexpr std::array< float, m_ncharge > m_chargeArr
Definition Calib.h:95
static constexpr int m_totnbins
Definition Calib.h:85
std::vector< float > getParams(const TF1 *f, unsigned int params)
Definition Calib.cxx:806
bool fillTiming(const pix::PixelMapping &pm, const std::string &inTimFile, std::map< unsigned int, std::vector< std::unique_ptr< CalibFrontEndInfo > > > &map_info)
Definition Calib.cxx:369
TH2F * get2DHistogramFromPath(TDirectoryFile *rodDir, const std::string &moduleName, const std::string &histName, int charge=-1)
Definition Calib.cxx:781
std::vector< float > getParams_quality(const TF1 *f)
Definition Calib.cxx:815
static constexpr float m_chi_error
Definition Calib.h:65
bool reFit_normalPix(std::vector< float > &params, std::vector< float > &q, std::vector< float > &qerr, std::vector< float > &tot, std::vector< float > &toterr, std::vector< float > &sig, std::vector< float > &sigerr, const unsigned int fe)
Definition Calib.cxx:315
static constexpr float m_timHi
Definition Calib.h:83
static constexpr float m_totLo
Definition Calib.h:86
static constexpr float m_totsigHi
Definition Calib.h:90
TIter getRodIterator(const TFile &inputFile)
Definition Calib.cxx:770
const std::array< std::string, 4 > m_layers
Definition Calib.h:70
static constexpr int m_phiBins
Definition Calib.h:73
static constexpr float m_sigLo
Definition Calib.h:78
static constexpr int m_ncharge
Definition Calib.h:94
static constexpr float m_totsigLo
Definition Calib.h:89
int chipId(int iphi, int ieta)
Definition Calib.cxx:733
static constexpr int m_timnbins
Definition Calib.h:81
const std::array< std::string, 4 > m_MODprefixes
Definition Calib.h:69
static constexpr int m_etaBins
Definition Calib.h:72
int pixelType(int iphi, int ieta, bool isForTOT=false)
Definition Calib.cxx:749
static constexpr float m_thrLo
Definition Calib.h:76
static constexpr int m_totsigNBins
Definition Calib.h:88
bool fillThresholds(const pix::PixelMapping &pm, const std::string &inThrFile, std::map< unsigned int, std::vector< std::unique_ptr< CalibFrontEndInfo > > > &map_info)
Definition Calib.cxx:549
int m_whichPart
Definition Calib.h:68
TIter getModuleIterator(TDirectoryFile *rodDir)
Definition Calib.cxx:776
static constexpr float m_sigHi
Definition Calib.h:79
static constexpr int m_nFE
Definition Calib.h:93
std::unique_ptr< TFile > m_wFile
Definition Calib.h:60
Calib(int whichPart, bool saveFile, const std::string &moduleName="")
Definition Calib.h:35
static constexpr std::array< float, m_ncharge > m_chargeErrArr
Definition Calib.h:96
void graphTitles(const std::unique_ptr< TGraphErrors > &graph, const std::string &name, const std::string &Yname)
Definition Calib.cxx:824
bool moduleInPart(const std::string &modName)
Definition Calib.cxx:798
static constexpr float m_totHi
Definition Calib.h:87
std::string m_testMOD
Definition Calib.h:63
static constexpr float m_timLo
Definition Calib.h:82
static constexpr int m_thrnbins
Definition Calib.h:75
static constexpr float m_thrHi
Definition Calib.h:77