00001
00002 #include <XANADOO/domain/interface/XANAEsdEvent.h>
00003 #include <XANADOO/XANAClusters/interface/XANACluster.h>
00004 #include <XANADOO/XANAClusters/interface/XANACaloRecHit.h>
00005 #include <XANADOO/XANAClusters/interface/XANAEmCluster.h>
00006 #include <XANADOO/XANAClusters/interface/XANASuperCluster.h>
00007 #include <XANADOO/XANAClusters/interface/XANAHadCluster.h>
00008 #include <XANADOO/XANATracks/interface/XANATrack.h>
00009 #include <XANADOO/XANAMcInfo/interface/XANAGeneratorEvent.h>
00010 #include <XANADOO/XANAMcInfo/interface/XANAGeantEvent.h>
00011 #include <XANADOO/XANAMcInfo/interface/XANAGeneratorParticle.h>
00012 #include <XANADOO/XANAElectronCandidate/interface/XANAElectronCandidate.h>
00013 #include <XANADOO/XANAElectronCandidate/interface/XANAElectronTrack.h>
00014 #include <XANADOO/XANAElectronCandidate/interface/XANAElectronSeed.h>
00015 #include <XANADOO/XANAMuons/interface/XANAMuonCandidate.h>
00016 #include <XANADOO/XANATriggerInfo/interface/XANATriggerInfo.h>
00017 #include <XANADOO/XANAJets/interface/XANAJet.h>
00018
00019 #include <XANADOO/XANAGeometry/interface/XANAEcalGeometry.h>
00020
00021 #include "TTree.h"
00022 #include "TBits.h"
00023 #include "TObjectTable.h"
00024 #include "TFile.h"
00025 #include "TBranch.h"
00026 #include "TClonesArray.h"
00027 #include "TObjArray.h"
00028 #include "TH1.h"
00029 #include "TH2.h"
00030 #include "TSystem.h"
00031 #include "TChain.h"
00032
00033 #include <string>
00034
00035
00036 using namespace std;
00037
00038 int main(int argc, char** argv)
00039 {
00040
00041 TChain *T = new TChain("ESD");
00042 T->Add("/data/scratch/collard/Production_xana151/single/famos/xSingleE4000.root");
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056 XANAEsdEvent *event = new XANAEsdEvent();
00057 T->SetBranchAddress("Event.",&event);
00058
00059 XANAGeneratorEvent *generatorEvent = new XANAGeneratorEvent();
00060 T->SetBranchAddress("GeneratorEvent.",&generatorEvent);
00061 XANAGeantEvent *geantEvent = new XANAGeantEvent();
00062 T->SetBranchAddress("GeantEvent.",&geantEvent);
00063
00064
00065 Short_t nc = 0, nh = 0, nhc = 0, ns = 0, npc = 0, nt = 0, nv = 0, nvt = 0;
00066 Short_t ne = 0, nm = 0, nelt = 0 ;
00067
00068 TObjArray *clusters = 0;
00069 TObjArray *hadClusters = 0;
00070 TObjArray *superClusters = 0;
00071 TObjArray *preshClusters = 0;
00072 TRefArray *hits = 0;
00073 TObjArray *tracks = 0;
00074 TObjArray *vertices = 0;
00075 TObjArray *electrons = 0;
00076 TObjArray *electronTracks = 0;
00077 TObjArray *muons = 0;
00078
00079 Short_t mc_np = 0, mc_nsp = 0, mc_nssp = 0, mc_npp = 0, mc_nspp = 0;
00080
00081
00082
00083
00084 TH1F *histo1001 = new TH1F("histo1001","E rec / E true ",100,0.8,1.05);
00085
00086 TH2F *histo1002 = new TH2F("histo1002","S1 vs Red5 (all)",100,0.,350.,150,0.,4500.);
00087 TH2F *histo1003 = new TH2F("histo1003","S1 vs Red5 (S1<1.7TeV)",100,0.,175.,150,0.,1700.);
00088 TH1F *histo1004 = new TH1F("histo1004","E_SC corr / E_SC ",100,0.5,1.5);
00089
00090 TH1F *histo1011 = new TH1F("histo1011","S1/Red5 bin Red5:0-20",50,0.,24.0);
00091 TH1F *histo1012 = new TH1F("histo1012","S1/Red5 bin Red5:20-30",50,0.,24.0);
00092 TH1F *histo1013 = new TH1F("histo1013","S1/Red5 bin Red5:30-40",50,0.,24.0);
00093 TH1F *histo1014 = new TH1F("histo1014","S1/Red5 bin Red5:40-50",50,0.,24.0);
00094 TH1F *histo1015 = new TH1F("histo1015","S1/Red5 bin Red5:50-60",50,0.,24.0);
00095 TH1F *histo1016 = new TH1F("histo1016","S1/Red5 bin Red5:60-70",50,0.,24.0);
00096 TH1F *histo1017 = new TH1F("histo1017","S1/Red5 bin Red5:70-80",50,0.,24.0);
00097 TH1F *histo1018 = new TH1F("histo1018","S1/Red5 bin Red5:80-90",50,0.,24.0);
00098 TH1F *histo1019 = new TH1F("histo1019","S1/Red5 bin Red5:90-100",50,0.,24.0);
00099 TH1F *histo1020 = new TH1F("histo1020","S1/Red5 bin Red5:100-110",50,0.,24.0);
00100 TH1F *histo1021 = new TH1F("histo1021","S1/Red5 bin Red5:110-120",50,0.,24.0);
00101
00102 TH1F *histo1111 = new TH1F("histo1111","S1 bin Red5:0-20",50,0.,1700.0);
00103 TH1F *histo1112 = new TH1F("histo1112","S1 bin Red5:20-30",50,0.,1700.0);
00104 TH1F *histo1113 = new TH1F("histo1113","S1 bin Red5:30-40",50,0.,1700.0);
00105 TH1F *histo1114 = new TH1F("histo1114","S1 bin Red5:40-50",50,0.,1700.0);
00106 TH1F *histo1115 = new TH1F("histo1115","S1 bin Red5:50-60",50,0.,1700.0);
00107 TH1F *histo1116 = new TH1F("histo1116","S1 bin Red5:60-70",50,0.,1700.0);
00108 TH1F *histo1117 = new TH1F("histo1117","S1 bin Red5:70-80",50,0.,1700.0);
00109 TH1F *histo1118 = new TH1F("histo1118","S1 bin Red5:80-90",50,0.,1700.0);
00110 TH1F *histo1119 = new TH1F("histo1119","S1 bin Red5:90-100",50,0.,1700.0);
00111 TH1F *histo1120 = new TH1F("histo1120","S1 bin Red5:100-110",50,0.,1700.0);
00112 TH1F *histo1121 = new TH1F("histo1121","S1 bin Red5:110-120",50,0.,1700.0);
00113
00114
00115
00116
00117 Int_t nb = 0;
00118 Int_t nevent = (Int_t)T->GetEntries();
00119
00120
00121
00122 cout << "Nombre d entrees a traiter : " << nevent << endl;
00123 for (Int_t i=0; i<nevent; i++) {
00124 nb += T->GetEntry(i);
00125
00126
00127
00128 mc_np = generatorEvent->getNumberOfParticles();
00129 mc_nsp = generatorEvent->getNumberOfSignalParticles();
00130 mc_nssp = generatorEvent->getNumberOfStableSignalParticles();
00131 mc_npp = generatorEvent->getNumberOfPileupParticles();
00132 mc_nspp = generatorEvent->getNumberOfStablePileupParticles();
00133 TObjArray *genpart = 0; genpart=generatorEvent->getParticles();
00134 int ilink=0; int first =1;
00135 for (int gp=0;gp<mc_np;gp++) {
00136 XANAGeneratorParticle *gpart = (XANAGeneratorParticle *)((*genpart)[gp]);
00137 if (gpart->getPartId()==11 && first==1)
00138 {
00139 ilink=gp;
00140 first=2;
00141 }
00142 }
00143 XANAGeneratorParticle *gElec = (XANAGeneratorParticle *)((*genpart)[ilink]);
00144
00145
00146
00147
00148 nc = event->getNumberOfEmClusters(); clusters = event->getEmClusters();
00149 nh = event->getNumberOfTrackHits(); hits = event->getEmClusterHits();
00150 nhc = event->getNumberOfHadClusters(); hadClusters = event->getHadClusters();
00151 ns = event->getNumberOfSuperClusters(); superClusters = event->getSuperClusters();
00152 npc = event->getNumberOfPreshClusters(); preshClusters = event->getPreshClusters();
00153 nt = event->getNumberOfTracks(); tracks = event->getTracks();
00154 nv = event->getNumberOfVertices(); vertices = event->getVertices();
00155 nvt = event->getNumberOfVertexTracks();
00156 ne = event->getNumberOfElectronCandidates(); electrons = event->getElectronCandidates();
00157 nm = event->getNumberOfMuonCandidates(); muons = event->getMuonCandidates();
00158 nelt = event->getNumberOfElectronTracks();
00159 electronTracks = event->getElectronTracks();
00160
00161
00162
00163 Int_t i_ze_el=-1;
00164 Float_t etmax=0.;
00165
00166 for (Int_t ie=0; ie<ne; ie++) {
00167 XANAElectronCandidate *elec = (XANAElectronCandidate*)((*electrons)[ie]);
00168 if ( (fabs( elec->getSuperCluster()->getPosition().eta() ) < 1.4442 ||
00169 fabs( elec->getSuperCluster()->getPosition().eta() ) > 1.566 )
00170 && elec->getPt()/elec->getSuperCluster()->getEnergyScaleFactor() > etmax)
00171 {
00172 i_ze_el=ie;
00173 etmax=elec->getPt()/elec->getSuperCluster()->getEnergyScaleFactor();
00174 }
00175 }
00176
00177 if (i_ze_el>-1)
00178 {
00179 XANAElectronCandidate *rElec = (XANAElectronCandidate*)((*electrons)[i_ze_el]);
00180
00181
00182
00183 float E_true = gElec->getMomentum().e();
00184 float E_rec = rElec->getSuperClusterEnergy()/rElec->getSuperCluster()->getEnergyScaleFactor();
00185
00186 histo1001->Fill(E_rec/E_true);
00187
00188
00189 float S1 = rElec->getSuperCluster()->getSum1();
00190 float Red5= rElec->getSuperCluster()->getSum9()-rElec->getSuperCluster()->getSum4();
00191
00192
00193 histo1002->Fill(Red5,S1);
00194 if (S1<1700)
00195 {
00196
00197 histo1003->Fill(Red5,S1);
00198 if (0<Red5 && Red5<=20) { histo1011->Fill(S1/Red5); histo1111->Fill(S1); }
00199 else if (20<Red5 && Red5<=30) { histo1012->Fill(S1/Red5); histo1112->Fill(S1); }
00200 else if (30<Red5 && Red5<=40) { histo1013->Fill(S1/Red5); histo1113->Fill(S1); }
00201 else if (40<Red5 && Red5<=50) { histo1014->Fill(S1/Red5); histo1114->Fill(S1); }
00202 else if (50<Red5 && Red5<=60) { histo1015->Fill(S1/Red5); histo1115->Fill(S1); }
00203 else if (60<Red5 && Red5<=70) { histo1016->Fill(S1/Red5); histo1116->Fill(S1); }
00204 else if (70<Red5 && Red5<=80) { histo1017->Fill(S1/Red5); histo1117->Fill(S1); }
00205 else if (80<Red5 && Red5<=90) { histo1018->Fill(S1/Red5); histo1118->Fill(S1); }
00206 else if (90<Red5 && Red5<=100) { histo1019->Fill(S1/Red5); histo1119->Fill(S1); }
00207 else if (100<Red5 && Red5<=110) { histo1020->Fill(S1/Red5); histo1120->Fill(S1); }
00208 else if (110<Red5 && Red5<=120) { histo1011->Fill(S1/Red5); histo1121->Fill(S1); }
00209 }
00210 else
00211 {
00212
00213 float NewS1= 10.9*Red5;
00214
00215 float NewErec= E_rec -S1 +NewS1;
00216 histo1004->Fill(NewErec/E_rec);
00217 }
00218
00219
00220
00221 }
00222
00223
00224 event->clear();
00225 generatorEvent->clear();
00226 geantEvent->clear();
00227 }
00228
00229
00230
00231 TFile *filehisto = new TFile("Saturation.root","RECREATE");
00232
00233 histo1001->Write();
00234 histo1002->Write();
00235 histo1003->Write();
00236 histo1004->Write();
00237
00238 histo1011->Write();
00239 histo1012->Write();
00240 histo1013->Write();
00241 histo1014->Write();
00242 histo1015->Write();
00243 histo1016->Write();
00244 histo1017->Write();
00245 histo1018->Write();
00246 histo1019->Write();
00247 histo1020->Write();
00248 histo1021->Write();
00249 histo1111->Write();
00250 histo1112->Write();
00251 histo1113->Write();
00252 histo1114->Write();
00253 histo1115->Write();
00254 histo1116->Write();
00255 histo1117->Write();
00256 histo1118->Write();
00257 histo1119->Write();
00258 histo1120->Write();
00259 histo1121->Write();
00260
00261
00262 filehisto->Close();
00263
00264
00265 }
00266