Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00015
00016 #ifndef hcalCalib_h
00017 #define hcalCalib_h
00018
00019 #include <vector>
00020 #include <map>
00021
00022 #include <TROOT.h>
00023 #include <TChain.h>
00024 #include <TFile.h>
00025 #include <TSelector.h>
00026 #include <TROOT.h>
00027 #include <TChain.h>
00028 #include <TFile.h>
00029 #include <TSelector.h>
00030
00031 #include "TLorentzVector.h"
00032 #include "TClonesArray.h"
00033 #include "TRefArray.h"
00034
00035
00036 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
00037
00038
00039 class hcalCalib : public TSelector {
00040 public :
00041 TTree *fChain;
00042
00043 UInt_t eventNumber;
00044 UInt_t runNumber;
00045 Int_t iEtaHit;
00046 UInt_t iPhiHit;
00047 TClonesArray *cells;
00048 Float_t emEnergy;
00049 Float_t targetE;
00050 Float_t etVetoJet;
00051
00052 Float_t xTrkHcal;
00053 Float_t yTrkHcal;
00054 Float_t zTrkHcal;
00055 Float_t xTrkEcal;
00056 Float_t yTrkEcal;
00057 Float_t zTrkEcal;
00058
00059 TLorentzVector *tagJetP4;
00060 TLorentzVector *probeJetP4;
00061
00062 Float_t tagJetEmFrac;
00063 Float_t probeJetEmFrac;
00064
00065
00066 TBranch *b_eventNumber;
00067 TBranch *b_runNumber;
00068 TBranch *b_iEtaHit;
00069 TBranch *b_iPhiHit;
00070 TBranch *b_cells;
00071 TBranch *b_emEnergy;
00072 TBranch *b_targetE;
00073 TBranch *b_etVetoJet;
00074
00075 TBranch *b_xTrkHcal;
00076 TBranch *b_yTrkHcal;
00077 TBranch *b_zTrkHcal;
00078 TBranch *b_xTrkEcal;
00079 TBranch *b_yTrkEcal;
00080 TBranch *b_zTrkEcal;
00081
00082 TBranch *b_tagJetEmFrac;
00083 TBranch *b_probeJetEmFrac;
00084
00085 TBranch *b_tagJetP4;
00086 TBranch *b_probeJetP4;
00087
00088
00089 hcalCalib(TTree * =0) { }
00090 virtual ~hcalCalib() { }
00091 virtual Int_t Version() const { return 2; }
00092 virtual void Begin(TTree *tree);
00093
00094 virtual void Init(TTree *tree);
00095 virtual Bool_t Notify();
00096 virtual Bool_t Process(Long64_t entry);
00097 virtual Int_t GetEntry(Long64_t entry, Int_t getall = 0) { return fChain ? fChain->GetTree()->GetEntry(entry, getall) : 0; }
00098 virtual void SetOption(const char *option) { fOption = option; }
00099 virtual void SetObject(TObject *obj) { fObject = obj; }
00100 virtual void SetInputList(TList *input) { fInput = input; }
00101 virtual TList *GetOutputList() const { return fOutput; }
00102
00103 virtual void Terminate();
00104
00105
00106 Float_t MIN_TARGET_E;
00107 Float_t MAX_TARGET_E;
00108
00109 Float_t MIN_CELL_E;
00110 Float_t MIN_EOVERP;
00111 Float_t MAX_EOVERP;
00112 Float_t MAX_TRK_EME;
00113
00114 Float_t MAX_ET_THIRD_JET;
00115 Float_t MIN_DPHI_DIJETS;
00116
00117 Bool_t SUM_DEPTHS;
00118 Bool_t SUM_SMALL_DEPTHS;
00119 Bool_t COMBINE_PHI;
00120
00121 Int_t HB_CLUSTER_SIZE;
00122 Int_t HE_CLUSTER_SIZE;
00123
00124 Bool_t USE_CONE_CLUSTERING;
00125 Float_t MAX_CONE_DIST;
00126
00127 Int_t CALIB_ABS_IETA_MAX;
00128 Int_t CALIB_ABS_IETA_MIN;
00129
00130 Float_t MAX_PROBEJET_EMFRAC;
00131 Float_t MAX_TAGJET_EMFRAC;
00132 Float_t MAX_TAGJET_ABSETA;
00133 Float_t MIN_TAGJET_ET;
00134
00135 Float_t MIN_PROBEJET_ABSETA;
00136
00137 TString CALIB_TYPE;
00138 TString CALIB_METHOD;
00139
00140 TString PHI_SYM_COR_FILENAME;
00141 Bool_t APPLY_PHI_SYM_COR_FLAG;
00142
00143 TString OUTPUT_COR_COEF_FILENAME;
00144 TString HISTO_FILENAME;
00145
00146
00147 const CaloGeometry* theCaloGeometry;
00148
00149
00150 void SetMinTargetE(Float_t e) { MIN_TARGET_E = e; }
00151 void SetMaxTargetE(Float_t e) { MAX_TARGET_E = e; }
00152 void SetSumDepthsFlag(Bool_t b) { SUM_DEPTHS = b; }
00153 void SetSumSmallDepthsFlag(Bool_t b) { SUM_SMALL_DEPTHS = b; }
00154 void SetCombinePhiFlag(Bool_t b) { COMBINE_PHI = b; }
00155 void SetMinCellE(Float_t e) { MIN_CELL_E = e; }
00156 void SetMinEOverP(Float_t e) { MIN_EOVERP = e; }
00157 void SetMaxEOverP(Float_t e) { MAX_EOVERP = e; }
00158 void SetMaxTrkEmE(Float_t e) { MAX_TRK_EME = e; }
00159 void SetCalibType(TString s) { CALIB_TYPE = s; }
00160 void SetCalibMethod(TString s) { CALIB_METHOD = s; }
00161 void SetHbClusterSize(Int_t i) { HB_CLUSTER_SIZE = i; }
00162 void SetHeClusterSize(Int_t i) { HE_CLUSTER_SIZE = i; }
00163
00164 void SetUseConeClustering (Bool_t b) { USE_CONE_CLUSTERING = b; }
00165 void SetConeMaxDist(Float_t d) { MAX_CONE_DIST = d; }
00166
00167 void SetCalibAbsIEtaMax(Int_t i) { CALIB_ABS_IETA_MAX = i; }
00168 void SetCalibAbsIEtaMin(Int_t i) { CALIB_ABS_IETA_MIN = i; }
00169 void SetMaxEtThirdJet(Float_t et) { MAX_ET_THIRD_JET = et; }
00170 void SetMinDPhiDiJets(Float_t dphi) { MIN_DPHI_DIJETS = dphi; }
00171 void SetApplyPhiSymCorFlag(Bool_t b) { APPLY_PHI_SYM_COR_FLAG = b; }
00172 void SetPhiSymCorFileName(TString filename) { PHI_SYM_COR_FILENAME = filename; }
00173 void SetMaxProbeJetEmFrac(Float_t f) { MAX_PROBEJET_EMFRAC = f; }
00174 void SetMaxTagJetEmFrac(Float_t f) { MAX_TAGJET_EMFRAC = f; }
00175 void SetMaxTagJetAbsEta(Float_t e) { MAX_TAGJET_ABSETA = e; }
00176 void SetMinTagJetEt(Float_t e) { MIN_TAGJET_ET = e; }
00177 void SetMinProbeJetAbsEta(Float_t e) { MIN_PROBEJET_ABSETA = e; }
00178 void SetOutputCorCoefFileName(TString filename) { OUTPUT_COR_COEF_FILENAME = filename; }
00179 void SetHistoFileName(TString filename) { HISTO_FILENAME = filename; }
00180
00181
00182 void SetCaloGeometry (const CaloGeometry* g) { theCaloGeometry = g; }
00183
00184 void GetCoefFromMtrxInvOfAve();
00185
00186 Bool_t ReadPhiSymCor();
00187
00188 void makeTextFile();
00189
00190
00191
00192 std::vector< std::vector<Float_t> > cellEnergies;
00193 std::vector< std::vector<UInt_t> > cellIds;
00194 std::vector< std::pair<Int_t, UInt_t> > refIEtaIPhi;
00195 std::vector< Float_t> targetEnergies;
00196
00197 std::map<UInt_t, Float_t> phiSymCor;
00198
00199 std::map<UInt_t, Float_t> solution;
00200 std::map<Int_t, Float_t> iEtaCoefMap;
00201
00202
00203
00204
00205 };
00206
00207 #endif
00208
00209 #ifdef hcalCalib_cxx
00210 void hcalCalib::Init(TTree *tree)
00211 {
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221 cells = 0;
00222 tagJetP4 = 0;
00223 probeJetP4 = 0;
00224
00225
00226 if (!tree) return;
00227 fChain = tree;
00228
00229
00230
00231 fChain->SetBranchAddress("eventNumber", &eventNumber, &b_eventNumber);
00232 fChain->SetBranchAddress("runNumber", &runNumber, &b_runNumber);
00233 fChain->SetBranchAddress("iEtaHit", &iEtaHit, &b_iEtaHit);
00234 fChain->SetBranchAddress("iPhiHit", &iPhiHit, &b_iPhiHit);
00235 fChain->SetBranchAddress("cells", &cells, &b_cells);
00236 fChain->SetBranchAddress("emEnergy", &emEnergy, &b_emEnergy);
00237 fChain->SetBranchAddress("targetE", &targetE, &b_targetE);
00238 fChain->SetBranchAddress("etVetoJet", &etVetoJet, &b_etVetoJet);
00239
00240 fChain->SetBranchAddress("xTrkHcal", &xTrkHcal, &b_xTrkHcal);
00241 fChain->SetBranchAddress("yTrkHcal", &yTrkHcal, &b_yTrkHcal);
00242 fChain->SetBranchAddress("zTrkHcal", &zTrkHcal, &b_zTrkHcal);
00243 fChain->SetBranchAddress("xTrkEcal", &xTrkEcal, &b_xTrkEcal);
00244 fChain->SetBranchAddress("yTrkEcal", &yTrkEcal, &b_yTrkEcal);
00245 fChain->SetBranchAddress("zTrkEcal", &zTrkEcal, &b_zTrkEcal);
00246
00247 fChain->SetBranchAddress("tagJetEmFrac", &tagJetEmFrac, &b_tagJetEmFrac);
00248 fChain->SetBranchAddress("probeJetEmFrac", &probeJetEmFrac, &b_probeJetEmFrac);
00249
00250 fChain->SetBranchAddress("tagJetP4", &tagJetP4, &b_tagJetP4);
00251 fChain->SetBranchAddress("probeJetP4", &probeJetP4, &b_probeJetP4);
00252
00253
00254
00255 }
00256
00257 Bool_t hcalCalib::Notify()
00258 {
00259
00260
00261
00262
00263
00264
00265 return kTRUE;
00266 }
00267
00268 #endif // #ifdef hcalCalib_cxx