#include <XANADOO/domain/interface/XANAEsdEvent.h>#include <XANADOO/XANAClusters/interface/XANACluster.h>#include <XANADOO/XANAClusters/interface/XANACaloRecHit.h>#include <XANADOO/XANAClusters/interface/XANAEmCluster.h>#include <XANADOO/XANAClusters/interface/XANASuperCluster.h>#include <XANADOO/XANAClusters/interface/XANAHadCluster.h>#include <XANADOO/XANATracks/interface/XANATrack.h>#include <XANADOO/XANAMcInfo/interface/XANAGeneratorEvent.h>#include <XANADOO/XANAMcInfo/interface/XANAGeantEvent.h>#include <XANADOO/XANAMcInfo/interface/XANAGeneratorParticle.h>#include <XANADOO/XANAElectronCandidate/interface/XANAElectronCandidate.h>#include <XANADOO/XANAElectronCandidate/interface/XANAElectronTrack.h>#include <XANADOO/XANAElectronCandidate/interface/XANAElectronSeed.h>#include <XANADOO/XANAMuons/interface/XANAMuonCandidate.h>#include <XANADOO/XANATriggerInfo/interface/XANATriggerInfo.h>#include <XANADOO/XANAJets/interface/XANAJet.h>#include <XANADOO/XANAGeometry/interface/XANAEcalGeometry.h>#include "TTree.h"#include "TBits.h"#include "TObjectTable.h"#include "TFile.h"#include "TBranch.h"#include "TClonesArray.h"#include "TObjArray.h"#include "TH1.h"#include "TH2.h"#include "TSystem.h"#include "TChain.h"#include <string>Include dependency graph for saturFamos.cpp:
Go to the source code of this file.
Functions | |
| int | main (int argc, char **argv) |
|
||||||||||||
|
Definition at line 38 of file saturFamos.cpp. References XANAGeantEvent::clear(), XANAGeneratorEvent::clear(), XANAEsdEvent::clear(), clusters, electrons, electronTracks, genpart, XANAEsdEvent::getElectronCandidates(), XANAEsdEvent::getElectronTracks(), XANAEsdEvent::getEmClusterHits(), XANAEsdEvent::getEmClusters(), XANASuperCluster::getEnergyScaleFactor(), XANAEsdEvent::getHadClusters(), XANAGeneratorParticle::getMomentum(), XANAEsdEvent::getMuonCandidates(), XANAEsdEvent::getNumberOfElectronCandidates(), XANAEsdEvent::getNumberOfElectronTracks(), XANAEsdEvent::getNumberOfEmClusters(), XANAEsdEvent::getNumberOfHadClusters(), XANAEsdEvent::getNumberOfMuonCandidates(), XANAGeneratorEvent::getNumberOfParticles(), XANAGeneratorEvent::getNumberOfPileupParticles(), XANAEsdEvent::getNumberOfPreshClusters(), XANAGeneratorEvent::getNumberOfSignalParticles(), XANAGeneratorEvent::getNumberOfStablePileupParticles(), XANAGeneratorEvent::getNumberOfStableSignalParticles(), XANAEsdEvent::getNumberOfSuperClusters(), XANAEsdEvent::getNumberOfTrackHits(), XANAEsdEvent::getNumberOfTracks(), XANAEsdEvent::getNumberOfVertexTracks(), XANAEsdEvent::getNumberOfVertices(), XANAGeneratorEvent::getParticles(), XANAGeneratorParticle::getPartId(), XANASuperCluster::getPosition(), XANAEsdEvent::getPreshClusters(), XANAElectronCandidate::getPt(), XANASuperCluster::getSum1(), XANASuperCluster::getSum4(), XANASuperCluster::getSum9(), XANAElectronCandidate::getSuperCluster(), XANAElectronCandidate::getSuperClusterEnergy(), XANAEsdEvent::getSuperClusters(), XANAEsdEvent::getTracks(), XANAEsdEvent::getVertices(), hadClusters, hits, muons, preshClusters, superClusters, tracks, and vertices.
00039 {
00040 // version TChain
00041 TChain *T = new TChain("ESD");
00042 T->Add("/data/scratch/collard/Production_xana151/single/famos/xSingleE4000.root");
00043 /*
00044 T->Add("/data/scratch/collard/Production_xana151/single/famos/xSinglePt50.root");
00045 T->Add("/data/scratch/collard/Production_xana151/single/famos/xSinglePt150.root");
00046 T->Add("/data/scratch/collard/Production_xana151/single/famos/xSinglePt500.root");
00047 T->Add("/data/scratch/collard/Production_xana151/single/famos/xSinglePt1500.root");
00048 T->Add("/data/scratch/collard/Production_xana151/single/famos/xSinglePt2500.root");
00049 */
00050
00051 // example of how to suppress reading of branches
00052 // has to be put before setting the branch addresses!
00053 // T->SetBranchStatus("GeantEvent*",0);
00054
00055 // Reconstructed event
00056 XANAEsdEvent *event = new XANAEsdEvent();
00057 T->SetBranchAddress("Event.",&event);
00058 // MC information (generator and GEANT event)
00059 XANAGeneratorEvent *generatorEvent = new XANAGeneratorEvent();
00060 T->SetBranchAddress("GeneratorEvent.",&generatorEvent);
00061 XANAGeantEvent *geantEvent = new XANAGeantEvent();
00062 T->SetBranchAddress("GeantEvent.",&geantEvent);
00063
00064 // Definitions
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 // Histo
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 // Start main loop on all events
00117 Int_t nb = 0;
00118 Int_t nevent = (Int_t)T->GetEntries();
00119
00120 // nevent =2;
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 // generator event
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 // Reconstructed event
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 // electrons
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 // E_rec/E_true
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 // S1 vs Red5
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 // verif de la saturation
00213 float NewS1= 10.9*Red5;
00214 // float NewS1= 11.0*Red5;
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 // f.Close();
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 }
|
1.3.5