#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 <XANADOO/XANAnalysisRS/interface/RSElecSelector.h>#include <XANADOO/XANAnalysisRS/interface/RSCorrectionFunc.h>#include <XANADOO/XANAnalysisRS/interface/RSSaturation.h>#include <XANADOO/XANAnalysisRS/interface/RSPhotonAssoc.h>#include <XANADOO/XANAnalysisRS/interface/ClassRSElec.h>#include <XANADOO/XANAnalysisRS/interface/RSVertexCorr.h>#include <XANADOO/XANAnalysisRS/interface/RSDistribAng.h>#include <XANADOO/XANAnalysisRS/interface/RSMassEstim.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 test_print.cpp:
Go to the source code of this file.
Functions | |
| int | main (int argc, char **argv) |
Variables | |
| Short_t | ne_candidatelectron = 0ns_supercluster=0 |
| TObjArray * | genpart = 0 |
| TObjArray * | clusters = 0 |
| TObjArray * | hadClusters = 0 |
| TObjArray * | superClusters = 0 |
| TObjArray * | preshClusters = 0 |
| TRefArray * | hits = 0 |
| TObjArray * | tracks = 0 |
| TObjArray * | vertices = 0 |
| TObjArray * | electrons = 0 |
| TObjArray * | electronTracks = 0 |
| TObjArray * | muons = 0 |
|
||||||||||||
|
Definition at line 63 of file test_print.cpp. References XANAGeantEvent::clear(), XANAGeneratorEvent::clear(), XANAEsdEvent::clear(), clusters, electrons, electronTracks, genpart, RSElec::getElecEnergy(), RSElec::getElecEt(), RSElec::getElecEta(), RSElec::getElecIsol(), RSElec::getElecPhi(), RSElec::getElecPx(), RSElec::getElecPy(), RSElec::getElecPz(), XANAEsdEvent::getElectronCandidates(), XANAEsdEvent::getElectronTracks(), XANAEsdEvent::getEmClusterHits(), XANAEsdEvent::getEmClusters(), XANASuperCluster::getEnergyScaleFactor(), XANAEsdEvent::getHadClusters(), XANAGeneratorParticle::getMass(), XANAGeneratorParticle::getMo1(), 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::getSuperCluster(), XANAElectronCandidate::getSuperClusterEnergy(), XANAEsdEvent::getSuperClusters(), XANAEsdEvent::getTracks(), XANAEsdEvent::getVertices(), hadClusters, hits, muons, ne_candidatelectron, preshClusters, RSAssocPhoton(), RSCorrectionFunc(), RSdistribAngGen(), RSdistribAngRec(), RSMassGen(), RSMassRec(), RSSaturation(), RSSelection(), superClusters, tracks, and vertices.
00064 {
00065 // Connect to file generated
00066 TFile *f;
00067 // if (argc==1) f = new TFile("SE04_E25_Pall_PT30.root");
00068 if (argc==1) f = new TFile("rsG1tev5_100.root");
00069
00070 else f = new TFile(*++argv);
00071
00072 // Read Tree named "T" in memory. Tree pointer is assigned the same name
00073 TTree *T = (TTree*)f->Get("ESD");
00074
00075
00076 // version TChain
00077 // TChain *T = new TChain("ESD");
00078 // T->Add("file1.root");
00079 // T->Add("file2.root");
00080
00081 // example of how to suppress reading of branches
00082 // has to be put before setting the branch addresses!
00083 // T->SetBranchStatus("GeantEvent*",0);
00084
00085 // Reconstructed event
00086 XANAEsdEvent *event = new XANAEsdEvent();
00087 T->SetBranchAddress("Event.",&event);
00088 // MC information (generator and GEANT event)
00089 XANAGeneratorEvent *generatorEvent = new XANAGeneratorEvent();
00090 T->SetBranchAddress("GeneratorEvent.",&generatorEvent);
00091
00092 XANAGeantEvent *geantEvent = new XANAGeantEvent();
00093 T->SetBranchAddress("GeantEvent.",&geantEvent);
00094
00095 // Start main loop on all events
00096 Int_t nb = 0;
00097 Int_t nevent = (Int_t)T->GetEntries();
00098
00099 nevent =5;
00100
00101 cout << "Nombre d entrees a traiter : " << nevent << endl;
00102 for (Int_t i=0; i<nevent; i++) {
00103 nb += T->GetEntry(i);
00104
00105 cout << " Graviton for event " << i << endl;
00106
00107 // Monte Carlo information
00108
00109 // generator event
00110 Short_t mc_np = 0, mc_nsp = 0, mc_nssp = 0, mc_npp = 0, mc_nspp = 0 ;
00111 mc_np = generatorEvent->getNumberOfParticles();
00112 mc_nsp = generatorEvent->getNumberOfSignalParticles();
00113 mc_nssp = generatorEvent->getNumberOfStableSignalParticles();
00114 mc_npp = generatorEvent->getNumberOfPileupParticles();
00115 mc_nspp = generatorEvent->getNumberOfStablePileupParticles();
00116 genpart=generatorEvent->getParticles();
00117 int npart=0,iRSgrav=11,ilink1=0,ilink2=0;
00118 for (int gp=0;gp<mc_np;gp++) {
00119 XANAGeneratorParticle *gpart = (XANAGeneratorParticle *)((*genpart)[gp]);
00120 if ((gpart->getPartId()==11 || gpart->getPartId()==-11) && gpart->getMo1()==12 )
00121 {
00122 if (npart==0)
00123 {
00124 // elec 1
00125 npart++;
00126 ilink1=gp;
00127 }
00128 else if (npart==1)
00129 {
00130 //elec 2
00131 npart++;
00132 ilink2=gp;
00133 }
00134 else
00135 {
00136 cout << " pas possible d'avoir 3 electrons rattaches au RSgrav " << endl;
00137 }
00138 }
00139 }
00140 XANAGeneratorParticle *gRSgrav = (XANAGeneratorParticle *)((*genpart)[iRSgrav]);
00141 XANAGeneratorParticle *gElec1 = (XANAGeneratorParticle *)((*genpart)[ilink1]);
00142 XANAGeneratorParticle *gElec2 = (XANAGeneratorParticle *)((*genpart)[ilink2]);
00143
00144 float trueMassGen=gRSgrav->getMass();
00145 float eeMassGen=RSMassGen(gElec1,gElec2);
00146 float costhetaGen = RSdistribAngGen(gElec1,gElec2);
00147
00148 float eeMassRec=-1.;
00149 float costhetaRec = -2.;
00150
00151
00152 // Reconstructed event
00153
00154 // Definitions
00155 Short_t nc = 0, nh = 0, nhc = 0, npc = 0, nt = 0, nv = 0, nvt = 0;
00156 Short_t nm = 0, nelt = 0 ;
00157
00158
00159 nc = event->getNumberOfEmClusters(); clusters = event->getEmClusters();
00160 nh = event->getNumberOfTrackHits(); hits = event->getEmClusterHits();
00161 nhc = event->getNumberOfHadClusters(); hadClusters = event->getHadClusters();
00162 ns_supercluster = event->getNumberOfSuperClusters();
00163 superClusters = event->getSuperClusters();
00164 npc = event->getNumberOfPreshClusters(); preshClusters = event->getPreshClusters();
00165 nt = event->getNumberOfTracks(); tracks = event->getTracks();
00166 nv = event->getNumberOfVertices(); vertices = event->getVertices();
00167 nvt = event->getNumberOfVertexTracks();
00168 ne_candidatelectron = event->getNumberOfElectronCandidates();
00169 electrons = event->getElectronCandidates();
00170 nm = event->getNumberOfMuonCandidates(); muons = event->getMuonCandidates();
00171 nelt = event->getNumberOfElectronTracks(); electronTracks = event->getElectronTracks();
00172
00173
00174
00175
00176 // electrons
00177 Int_t indexel1=-1, indexel2=-1;
00178
00179 // Selection des 2 candidats electrons les plus energetiques
00180
00181 RSSelection(indexel1, indexel2);
00182
00183 // On ne travaille qu'avec les 2 Candidats Electrons les + energetiques
00184
00185 if (indexel1>-1 && indexel2>-1)
00186 {
00187 XANAElectronCandidate *elec1 = (XANAElectronCandidate*)((*electrons)[indexel1]);
00188 XANAElectronCandidate *elec2 = (XANAElectronCandidate*)((*electrons)[indexel2]);
00189
00190 float energy1 =elec1->getSuperClusterEnergy()/elec1->getSuperCluster()->getEnergyScaleFactor();
00191 float eta1 =elec1->getSuperCluster()->getPosition().eta();
00192 float phi1 =elec1->getSuperCluster()->getPosition().phi();
00193
00194 float energy2 =elec2->getSuperClusterEnergy()/elec2->getSuperCluster()->getEnergyScaleFactor();
00195 float eta2 =elec2->getSuperCluster()->getPosition().eta();
00196 float phi2 =elec2->getSuperCluster()->getPosition().phi();
00197
00198 cout << "RSSelection: elec1 " << energy1 << " Eta " << eta1 << " Phi " << phi1 << endl;
00199 cout << "RSSelection: elec2 " << energy2 << " Eta " << eta2 << " Phi " << phi2 << endl;
00200
00201 // Traitement de la saturation
00202 int iflag_satur=0;
00203 RSSaturation(elec1, energy1, iflag_satur);
00204 cout << "RSSaturation: elec1 " << energy1 << " Sat? " << iflag_satur << endl;
00205
00206 RSSaturation(elec2, energy2, iflag_satur);
00207 cout << "RSSaturation: elec2 " << energy2 << " Sat? " << iflag_satur << endl;
00208
00209 // Association des photons
00210 float EtIsol1=0.;
00211 float EtIsol2=0.;
00212 RSAssocPhoton(elec1, energy1, EtIsol1);
00213 RSAssocPhoton(elec2, energy2, EtIsol2);
00214
00215 cout << "RSAssocPhoton: elec1 " << energy1 << " Iso " << EtIsol1 << endl;
00216 cout << "RSAssocPhoton: elec2 " << energy2 << " Iso " << EtIsol2 << endl;
00217
00218 // Correction de l'energie pour eta
00219
00220 bool FAMOS=true;
00221 float xcor1=RSCorrectionFunc(energy1, eta1, FAMOS);
00222 float xcor2=RSCorrectionFunc(energy2, eta2, FAMOS);
00223 xcor1=1./xcor1;
00224 xcor2=1./xcor2;
00225 energy1*=xcor1;
00226 energy2*=xcor2;
00227
00228 cout << "RSCorrectionFunc: elec1 " << energy1 << " xcor1 " << xcor1 << endl;
00229 cout << "RSCorrectionFunc: elec2 " << energy2 << " xcor2 " << xcor2 << endl;
00230
00231 // Candidat RSElec
00232
00233 RSElec *cElec1 = new RSElec(elec1,energy1,eta1,phi1,EtIsol1);
00234 RSElec *cElec2 = new RSElec(elec2,energy2,eta2,phi2,EtIsol2);
00235
00236 cout << " RSElec: cElec1 " << cElec1->getElecEnergy() << " Eta" << cElec1->getElecEta() <<
00237 " Phi " << cElec1->getElecPhi() << " Iso " << cElec1->getElecIsol() << " Px " << cElec1->getElecPx() <<
00238 " Py " << cElec1->getElecPy() << " Pz " << cElec1->getElecPz() << " Et " << cElec1->getElecEt() << endl;
00239 cout << " RSElec: cElec2 " << cElec2->getElecEnergy() << " Eta" << cElec2->getElecEta() <<
00240 " Phi " << cElec2->getElecPhi() << " Iso " << cElec2->getElecIsol() << " Px " << cElec2->getElecPx() <<
00241 " Py " << cElec2->getElecPy() << " Pz " << cElec2->getElecPz() << " Et " << cElec2->getElecEt() << endl;
00242
00243 // Masse Reconstruite
00244 eeMassRec=RSMassRec(cElec1,cElec2);
00245
00246 // Cut en iso (H/E pas encore dispo dans FAMOS 1_2_0)
00247 if ( cElec1->getElecIsol()< 0.02* cElec1->getElecEt() &&
00248 cElec2->getElecIsol()< 0.02* cElec2->getElecEt() )
00249 {
00250 costhetaRec = RSdistribAngRec(cElec1,cElec2);
00251
00252 }
00253
00254
00255 cout << " Graviton Mass " << trueMassGen << " ee-gen " << eeMassGen << " rec " << eeMassRec << endl;
00256 cout << " Graviton costheta : ee-gen " << costhetaGen << " rec " << costhetaRec << endl;
00257
00258 cout << endl;
00259
00260
00261 }
00262
00263
00264 event->clear();
00265 generatorEvent->clear();
00266 geantEvent->clear();
00267 }
00268
00269 }
|
|
|
Definition at line 49 of file test_print.cpp. |
|
|
Definition at line 56 of file test_print.cpp. |
|
|
Definition at line 57 of file test_print.cpp. |
|
|
Definition at line 48 of file test_print.cpp. |
|
|
Definition at line 50 of file test_print.cpp. |
|
|
Definition at line 53 of file test_print.cpp. |
|
|
Definition at line 58 of file test_print.cpp. |
|
|
Definition at line 47 of file test_print.cpp. |
|
|
Definition at line 52 of file test_print.cpp. |
|
|
Definition at line 51 of file test_print.cpp. |
|
|
Definition at line 54 of file test_print.cpp. |
|
|
Definition at line 55 of file test_print.cpp. |
1.3.5