ATLAS Offline Software
CaloHadDMCoeffFit.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef CALOLOCALHADCALIB_CALOHADDMCOEFFFIT_H
6 #define CALOLOCALHADCALIB_CALOHADDMCOEFFFIT_H
7 
22 #include <vector>
23 #include <string>
24 #include <math.h>
26 
27 class CaloLocalHadCoeff;
29 class CaloHadDMCoeffData;
30 class TProfile;
31 class TH2F;
32 class TH1F;
33 class TProfile2D;
34 
35 
37  public :
38 
39  // average and rms on-the-flight calculation
40  class PrepData {
41  public:
42  unsigned int n_entries;
43  double m_sum;
44  double m_aver;
45  double m_rms;
46  double m_sw;
47  PrepData(): n_entries(0),m_sum(0.0),m_aver(0.0),m_rms(0.0),m_sw(0.0) { }
49  void add(double xx, double w=1.0)
50  {
51  n_entries++;
52  m_sum += xx;
53  m_rms = (m_sw/(m_sw+w))*(m_rms+(w/(m_sw+w))*(xx-m_aver)*(xx-m_aver));
54  m_aver = m_aver+(xx-m_aver)*w/(m_sw+w);
55  m_sw += w;
56  }
57  unsigned int size() { return n_entries;}
58  };
59 
60  // fit data
61  class FitData {
62  public:
63  bool isOK;
64  float p0, p1, s0, s1;
65  std::string descr;
66  FitData() : isOK(true), p0(0), p1(0), s0(0), s1(0), descr("def") {}
67  FitData(float the_p0, float the_s0, float the_p1, float the_s1)
68  : isOK(true), p0(the_p0), p1(the_p1), s0(the_s0), s1(the_s1), descr("def") {}
69  void getInverted(float &p0inv, float &s0inv, float &p1inv, float &s1inv)
70  {
71  p0inv=0.0; s0inv=0.0; p1inv=0.0; s1inv=0.0;
72  if(p1!=0) {
73  p0inv = -1.0*p0/p1;
74  p1inv = 1./p1;
75  s0inv = sqrt((s0*s0)/(p1*p1) + (s1*s1)*(p0*p0)/(p1*p1*p1*p1));
76  s1inv = s1/(p1*p1);
77  }
78  }
79  };
80 
83 
84  CaloLocalHadCoeff * process(CaloHadDMCoeffData *myData, CaloLocalHadCoeff *myHadDMCoeff, bool isSingleParticle=true, bool tbflag=false);
85  void make_report(std::string &sfname);
86  void SetNormalizationType(std::string &stype) {m_NormalizationType = stype;}
87 
88  private:
91 
93 
95  double m_energyMin;
96  double m_weightMax;
98 
99  std::string m_NormalizationType;
101 
102  std::vector<PrepData *> m_engClus;
103  std::vector<PrepData *> m_engPrep;
104  std::vector<PrepData *> m_engDm;
105  std::vector<PrepData *> m_engDmOverClus;
106  std::vector<TProfile *> m_hp_DmVsPrep;
107  std::vector<TH2F *> m_h2_DmVsPrep;
108  std::vector<TH1F *> m_h1_engDmOverClus;
109  std::vector<FitData *> m_FitData;
110 
111  std::vector<TProfile2D *> m_hp2_DmWeight;
112 
113  void clear();
114  double ProfileRefiner(TProfile *pH, double ev_ratio=0.92);
115  double GetAverageWithoutRightTail(TH1F *pH, double ev_ratio=0.92);
116  int getFirstEnerLambdaBin(int ibin);
117 
120 };
121 
122 #endif
123 
CaloHadDMCoeffFit::PrepData::size
unsigned int size()
Definition: CaloHadDMCoeffFit.h:57
ReadCellNoiseFromCoolCompare.s1
s1
Definition: ReadCellNoiseFromCoolCompare.py:378
CaloHadDMCoeffFit::PrepData
Definition: CaloHadDMCoeffFit.h:40
ATLAS_NOT_THREAD_SAFE
#define ATLAS_NOT_THREAD_SAFE
getNoisyStrip() Find noisy strips from hitmaps and write out into xml/db formats
Definition: checker_macros.h:212
TH2F
Definition: rootspy.cxx:420
CaloHadDMCoeffFit::PrepData::n_entries
unsigned int n_entries
Definition: CaloHadDMCoeffFit.h:42
TProfile2D
Definition: rootspy.cxx:531
CaloHadDMCoeffFit::m_NormalizationType
std::string m_NormalizationType
Definition: CaloHadDMCoeffFit.h:99
SUSY_SimplifiedModel_PostInclude.process
string process
Definition: SUSY_SimplifiedModel_PostInclude.py:42
CaloHadDMCoeffFit::FitData::FitData
FitData(float the_p0, float the_s0, float the_p1, float the_s1)
Definition: CaloHadDMCoeffFit.h:67
CaloHadDMCoeffFit::m_hp_DmVsPrep
std::vector< TProfile * > m_hp_DmVsPrep
Definition: CaloHadDMCoeffFit.h:106
CaloHadDMCoeffFit::FitData
Definition: CaloHadDMCoeffFit.h:61
CaloHadDMCoeffFit
To fill and fit TProfile histograms using special dead material tree.
Definition: CaloHadDMCoeffFit.h:36
CaloLocalHadCoeffHelper
Definition: CaloLocalHadCoeffHelper.h:14
CaloHadDMCoeffFit::PrepData::~PrepData
~PrepData()
Definition: CaloHadDMCoeffFit.h:48
CaloHadDMCoeffFit::PrepData::m_rms
double m_rms
Definition: CaloHadDMCoeffFit.h:45
CaloHadDMCoeffFit::m_engDmOverClus
std::vector< PrepData * > m_engDmOverClus
Definition: CaloHadDMCoeffFit.h:105
CaloHadDMCoeffFit::PrepData::m_sw
double m_sw
Definition: CaloHadDMCoeffFit.h:46
CaloLocalHadCoeff
Hold binned correction data for local hadronic calibration procedure.
Definition: CaloLocalHadCoeff.h:41
CaloHadDMCoeffFit::m_weightMax
double m_weightMax
Definition: CaloHadDMCoeffFit.h:96
CaloHadDMCoeffData
Data to read from special DeadMaterialTree.
Definition: CaloHadDMCoeffData.h:30
python.TransformConfig.descr
descr
print "%s.properties()" % self.__name__
Definition: TransformConfig.py:360
MC::isSingleParticle
bool isSingleParticle(const T &p)
Definition: HepMCHelpers.h:55
CaloHadDMCoeffFit::FitData::getInverted
void getInverted(float &p0inv, float &s0inv, float &p1inv, float &s1inv)
Definition: CaloHadDMCoeffFit.h:69
CaloHadDMCoeffFit::FitData::FitData
FitData()
Definition: CaloHadDMCoeffFit.h:66
CaloHadDMCoeffFit::m_engClus
std::vector< PrepData * > m_engClus
Definition: CaloHadDMCoeffFit.h:102
CaloHadDMCoeffFit::m_energyMin
double m_energyMin
Definition: CaloHadDMCoeffFit.h:95
CaloHadDMCoeffFit::PrepData::PrepData
PrepData()
Definition: CaloHadDMCoeffFit.h:47
CaloHadDMCoeffFit::SetNormalizationType
void SetNormalizationType(std::string &stype)
Definition: CaloHadDMCoeffFit.h:86
CaloHadDMCoeffFit::m_distance_cut
double m_distance_cut
Definition: CaloHadDMCoeffFit.h:97
CaloHadDMCoeffFit::FitData::descr
std::string descr
Definition: CaloHadDMCoeffFit.h:65
CaloHadDMCoeffFit::PrepData::m_sum
double m_sum
Definition: CaloHadDMCoeffFit.h:43
TProfile
Definition: rootspy.cxx:515
CaloHadDMCoeffFit::PrepData::add
void add(double xx, double w=1.0)
Definition: CaloHadDMCoeffFit.h:49
CaloHadDMCoeffFit::FitData::isOK
bool isOK
Definition: CaloHadDMCoeffFit.h:63
VKalVrtAthena::varHolder_detail::clear
void clear(T &var)
Definition: NtupleVars.h:48
TH1F
Definition: rootspy.cxx:320
CaloHadDMCoeffFit::m_h1_engDmOverClus
std::vector< TH1F * > m_h1_engDmOverClus
Definition: CaloHadDMCoeffFit.h:108
CaloHadDMCoeffFit::m_engPrep
std::vector< PrepData * > m_engPrep
Definition: CaloHadDMCoeffFit.h:103
CaloHadDMCoeffFit::m_isTestbeam
bool m_isTestbeam
Definition: CaloHadDMCoeffFit.h:94
CaloHadDMCoeffFit::m_HadDMCoeff
CaloLocalHadCoeff * m_HadDMCoeff
Definition: CaloHadDMCoeffFit.h:92
CaloHadDMCoeffFit::m_data
CaloHadDMCoeffData * m_data
Definition: CaloHadDMCoeffFit.h:89
CaloHadDMCoeffFit::m_hp2_DmWeight
std::vector< TProfile2D * > m_hp2_DmWeight
Definition: CaloHadDMCoeffFit.h:111
CaloHadDMCoeffFit::m_HadDMHelper
CaloLocalHadCoeffHelper * m_HadDMHelper
Definition: CaloHadDMCoeffFit.h:90
CaloHadDMCoeffFit::m_FitData
std::vector< FitData * > m_FitData
Definition: CaloHadDMCoeffFit.h:109
CaloHadDMCoeffFit::PrepData::m_aver
double m_aver
Definition: CaloHadDMCoeffFit.h:44
CaloHadDMCoeffFit::m_h2_DmVsPrep
std::vector< TH2F * > m_h2_DmVsPrep
Definition: CaloHadDMCoeffFit.h:107
python.IoTestsLib.w
def w
Definition: IoTestsLib.py:200
checker_macros.h
Define macros for attributes used to control the static checker.
CaloHadDMCoeffFit::m_engDm
std::vector< PrepData * > m_engDm
Definition: CaloHadDMCoeffFit.h:104
CaloHadDMCoeffFit::CaloHadDMCoeffFit
CaloHadDMCoeffFit(const CaloHadDMCoeffFit &)
CaloHadDMCoeffFit::m_NormalizationTypeNumber
int m_NormalizationTypeNumber
Definition: CaloHadDMCoeffFit.h:100