CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
MaterialBudgetTree.cc
Go to the documentation of this file.
3 
4 
6 {
7  theFile = new TFile(filename.c_str(),"RECREATE");
8 
9  theFile->cd();
10 
11  book();
12 
13 }
14 
15 
17 {
18  std::cout << "=== booking user TTree ===" << std::endl;
19  // create the TTree
20  theTree = new TTree("T1","GeometryTest Tree");
21 
22  // GENERAL block
23  theTree->Branch("MB", &t_MB, "MB/F");
24  theTree->Branch("IL", &t_IL, "IL/F");
25 
26  // rr
27  // PARTICLE Block
28  theTree->Branch( "Particle ID", &t_ParticleID, "Particle_ID/I" );
29  theTree->Branch( "Particle Pt", &t_ParticlePt, "Particle_Pt/F" );
30  theTree->Branch( "Particle Eta", &t_ParticleEta, "Particle_Eta/F" );
31  theTree->Branch( "Particle Phi", &t_ParticlePhi, "Particle_Phi/F" );
32  theTree->Branch( "Particle Energy", &t_ParticleEnergy, "Particle_E/F" );
33  theTree->Branch( "Particle Mass", &t_ParticleMass, "Particle_M/F" );
34  // rr
35 
36  if( theData->allStepsON() ) {
37  theTree->Branch("Nsteps", &t_Nsteps, "Nsteps/I");
38  theTree->Branch("DeltaMB", t_DeltaMB, "DeltaMB[Nsteps]/F");
39  // rr
40  theTree->Branch("DeltaMB_SUP", t_DeltaMB_SUP, "DeltaMB_SUP[Nsteps]/F");
41  theTree->Branch("DeltaMB_SEN", t_DeltaMB_SEN, "DeltaMB_SEN[Nsteps]/F");
42  theTree->Branch("DeltaMB_CAB", t_DeltaMB_CAB, "DeltaMB_CAB[Nsteps]/F");
43  theTree->Branch("DeltaMB_COL", t_DeltaMB_COL, "DeltaMB_COL[Nsteps]/F");
44  theTree->Branch("DeltaMB_ELE", t_DeltaMB_ELE, "DeltaMB_ELE[Nsteps]/F");
45  theTree->Branch("DeltaMB_OTH", t_DeltaMB_OTH, "DeltaMB_OTH[Nsteps]/F");
46  theTree->Branch("DeltaMB_AIR", t_DeltaMB_AIR, "DeltaMB_AIR[Nsteps]/F");
47  theTree->Branch("DeltaIL", t_DeltaIL, "DeltaIL[Nsteps]/F");
48  theTree->Branch("DeltaIL_SUP", t_DeltaIL_SUP, "DeltaIL_SUP[Nsteps]/F");
49  theTree->Branch("DeltaIL_SEN", t_DeltaIL_SEN, "DeltaIL_SEN[Nsteps]/F");
50  theTree->Branch("DeltaIL_CAB", t_DeltaIL_CAB, "DeltaIL_CAB[Nsteps]/F");
51  theTree->Branch("DeltaIL_COL", t_DeltaIL_COL, "DeltaIL_COL[Nsteps]/F");
52  theTree->Branch("DeltaIL_ELE", t_DeltaIL_ELE, "DeltaIL_ELE[Nsteps]/F");
53  theTree->Branch("DeltaIL_OTH", t_DeltaIL_OTH, "DeltaIL_OTH[Nsteps]/F");
54  theTree->Branch("DeltaIL_AIR", t_DeltaIL_AIR, "DeltaIL_AIR[Nsteps]/F");
55  // rr
56  theTree->Branch("Initial X", t_InitialX, "Initial_X[Nsteps]/D");
57  theTree->Branch("Initial Y", t_InitialY, "Initial_Y[Nsteps]/D");
58  theTree->Branch("Initial Z", t_InitialZ, "Initial_Z[Nsteps]/D");
59  theTree->Branch("Final X", t_FinalX, "Final_X[Nsteps]/D");
60  theTree->Branch("Final Y", t_FinalY, "Final_Y[Nsteps]/D");
61  theTree->Branch("Final Z", t_FinalZ, "Final_Z[Nsteps]/D");
62  // rr
63  theTree->Branch("Volume ID", t_VolumeID, "VolumeID[Nsteps]/I");
64  theTree->Branch("Volume Name", t_VolumeName, "VolumeName[Nsteps]/C");
65  theTree->Branch("Volume Copy", t_VolumeCopy, "VolumeCopy[Nsteps]/I");
66  theTree->Branch("Volume X", t_VolumeX, "VolumeX[Nsteps]/F");
67  theTree->Branch("Volume Y", t_VolumeY, "VolumeY[Nsteps]/F");
68  theTree->Branch("Volume Z", t_VolumeZ, "VolumeZ[Nsteps]/F");
69  theTree->Branch("Volume X axis 1", t_VolumeXaxis1, "VolumeXaxis1[Nsteps]/F");
70  theTree->Branch("Volume X axis 2", t_VolumeXaxis2, "VolumeXaxis2[Nsteps]/F");
71  theTree->Branch("Volume X axis 3", t_VolumeXaxis3, "VolumeXaxis3[Nsteps]/F");
72  theTree->Branch("Volume Y axis 1", t_VolumeYaxis1, "VolumeYaxis1[Nsteps]/F");
73  theTree->Branch("Volume Y axis 2", t_VolumeYaxis2, "VolumeYaxis2[Nsteps]/F");
74  theTree->Branch("Volume Y axis 3", t_VolumeYaxis3, "VolumeYaxis3[Nsteps]/F");
75  theTree->Branch("Volume Z axis 1", t_VolumeZaxis1, "VolumeZaxis1[Nsteps]/F");
76  theTree->Branch("Volume Z axis 2", t_VolumeZaxis2, "VolumeZaxis2[Nsteps]/F");
77  theTree->Branch("Volume Z axis 3", t_VolumeZaxis3, "VolumeZaxis3[Nsteps]/F");
78 
79  theTree->Branch("Material ID", t_MaterialID, "MaterialID[Nsteps]/I");
80  theTree->Branch("Material Name", t_MaterialName, "MaterialName[Nsteps]/C");
81  theTree->Branch("Material X0", t_MaterialX0, "MaterialX0[Nsteps]/F");
82  theTree->Branch("Material Lambda0", t_MaterialLambda0, "MaterialLambda0[Nsteps]/F");
83  theTree->Branch("Material Density", t_MaterialDensity, "MaterialDensity[Nsteps]/F");
84 
85  theTree->Branch("Particle Step ID", t_ParticleStepID, "Step_ID[Nsteps]/I");
86  theTree->Branch("Particle Step Initial Pt", t_ParticleStepInitialPt, "Step_Initial_Pt[Nsteps]/F");
87  theTree->Branch("Particle Step Initial Eta", t_ParticleStepInitialEta, "Step_Initial_Eta[Nsteps]/F");
88  theTree->Branch("Particle Step Initial Phi", t_ParticleStepInitialPhi, "Step_Initial_Phi[Nsteps]/F");
89  theTree->Branch("Particle Step Initial Energy", t_ParticleStepInitialEnergy, "Step_Initial_E[Nsteps]/F");
90  theTree->Branch("Particle Step Initial Px", t_ParticleStepInitialPx, "Step_Initial_Px[Nsteps]/F");
91  theTree->Branch("Particle Step Initial Py", t_ParticleStepInitialPy, "Step_Initial_Py[Nsteps]/F");
92  theTree->Branch("Particle Step Initial Pz", t_ParticleStepInitialPz, "Step_Initial_Pz[Nsteps]/F");
93  theTree->Branch("Particle Step Initial Beta", t_ParticleStepInitialBeta, "Step_Initial_Beta[Nsteps]/F");
94  theTree->Branch("Particle Step Initial Gamma", t_ParticleStepInitialGamma, "Step_Initial_Gamma[Nsteps]/F");
95  theTree->Branch("Particle Step Initial Mass", t_ParticleStepInitialMass, "Step_Initial_Mass[Nsteps]/F");
96  theTree->Branch("Particle Step Final Pt", t_ParticleStepFinalPt, "Step_Final_Pt[Nsteps]/F");
97  theTree->Branch("Particle Step Final Eta", t_ParticleStepFinalEta, "Step_Final_Eta[Nsteps]/F");
98  theTree->Branch("Particle Step Final Phi", t_ParticleStepFinalPhi, "Step_Final_Phi[Nsteps]/F");
99  theTree->Branch("Particle Step Final Energy", t_ParticleStepFinalEnergy, "Step_Final_E[Nsteps]/F");
100  theTree->Branch("Particle Step Final Px", t_ParticleStepFinalPx, "Step_Final_Px[Nsteps]/F");
101  theTree->Branch("Particle Step Final Py", t_ParticleStepFinalPy, "Step_Final_Py[Nsteps]/F");
102  theTree->Branch("Particle Step Final Pz", t_ParticleStepFinalPz, "Step_Final_Pz[Nsteps]/F");
103  theTree->Branch("Particle Step Final Beta", t_ParticleStepFinalBeta, "Step_Final_Beta[Nsteps]/F");
104  theTree->Branch("Particle Step Final Gamma", t_ParticleStepFinalGamma, "Step_Final_Gamma[Nsteps]/F");
105  theTree->Branch("Particle Step Final Mass", t_ParticleStepFinalMass, "Step_Final_Mass[Nsteps]/F");
106  theTree->Branch("Particle Step Pre Interaction", t_ParticleStepPreInteraction, "Step_PreInteraction[Nsteps]/I");
107  theTree->Branch("Particle Step Post Interaction", t_ParticleStepPostInteraction, "Step_PostInteraction[Nsteps]/I");
108  // rr
109  }
110 
111  std::cout << "=== booking user TTree done ===" << std::endl;
112 
113 }
114 
115 
117 {
118 
119 }
120 
121 
123 {
124 }
125 
126 
128 {
129  t_MB = theData->getTotalMB();
130  t_IL = theData->getTotalIL();
131  // t_Eta = theData->getEta();
132  // t_Phi = theData->getPhi();
133 
134  // rr
141  // rr
142 
143  // do this only if I really want to save all the steps
144  if( theData->allStepsON() ) {
147  std::cout << " Number of Steps into the tree " << t_Nsteps << std::endl;
148  for(int ii=0;ii<t_Nsteps;ii++) {
149  t_DeltaMB[ii] = theData->getStepDmb(ii);
155  t_DeltaMB_OTH[ii] = theData->getOtherDmb(ii);
156  t_DeltaMB_AIR[ii] = theData->getAirDmb(ii);
157 
158  t_DeltaIL[ii] = theData->getStepDil(ii);
164  t_DeltaIL_OTH[ii] = theData->getOtherDil(ii);
165  t_DeltaIL_AIR[ii] = theData->getAirDil(ii);
166 
170  t_FinalX[ii] = theData->getStepFinalX(ii);
171  t_FinalY[ii] = theData->getStepFinalY(ii);
172  t_FinalZ[ii] = theData->getStepFinalZ(ii);
173 
175  t_VolumeName[ii] = const_cast<char*> (theData->getStepVolumeName(ii).c_str());
177  t_VolumeX[ii] = theData->getStepVolumeX(ii);
178  t_VolumeY[ii] = theData->getStepVolumeY(ii);
179  t_VolumeZ[ii] = theData->getStepVolumeZ(ii);
189 
191  t_MaterialName[ii] = const_cast<char*> (theData->getStepMaterialName(ii).c_str());
195 
219 
220  // rr
221  }
222  }
223 
224  theTree->Fill();
225 
226 }
227 
228 
229 // here one can print the histograms or
230 // manipulate them before they are written to file
232 {
233  std::cout << " === save user TTree ===" << std::endl;
234 
235  theFile->cd();
236  theTree->Write();
237 
238  theFile->Close();
239 
240 }
241 
float getTotalMB() const
float t_MaterialLambda0[MAXSTEPS]
float t_DeltaIL_CAB[MAXSTEPS]
float getPt() const
float t_ParticleStepFinalEnergy[MAXSTEPS]
CLHEP::HepLorentzVector getStepVolumeYaxis(int is)
float t_VolumeXaxis3[MAXSTEPS]
float getStepInitialEnergy(int is)
float getAirDmb(int is) const
float t_DeltaMB_CAB[MAXSTEPS]
float getStepMaterialLambda0(int is)
double getStepFinalX(int is)
float t_DeltaMB_SEN[MAXSTEPS]
float getStepFinalEnergy(int is)
float getOtherDil(int is) const
float getSupportDil(int is) const
float getStepInitialGamma(int is)
float t_VolumeXaxis1[MAXSTEPS]
float t_ParticleStepFinalPt[MAXSTEPS]
float t_DeltaIL_OTH[MAXSTEPS]
int getStepVolumeCopy(int is)
float getSensitiveDmb(int is) const
float getStepVolumeZ(int is)
float t_ParticleStepFinalPhi[MAXSTEPS]
float t_ParticleStepInitialPt[MAXSTEPS]
float getStepInitialPhi(int is)
char * t_VolumeName[MAXSTEPS]
float getStepFinalPhi(int is)
int t_MaterialID[MAXSTEPS]
float t_DeltaIL_ELE[MAXSTEPS]
float getStepMaterialX0(int is)
float t_DeltaIL_SEN[MAXSTEPS]
float t_ParticleStepInitialPx[MAXSTEPS]
double t_InitialX[MAXSTEPS]
MaterialBudgetData * theData
float getElectronicsDil(int is) const
double t_FinalX[MAXSTEPS]
float t_DeltaMB_AIR[MAXSTEPS]
float t_VolumeYaxis3[MAXSTEPS]
virtual void fillEndTrack()
float t_ParticleStepFinalPx[MAXSTEPS]
MaterialBudgetTree(MaterialBudgetData *data, const std::string &fileName)
float t_ParticleStepFinalEta[MAXSTEPS]
float t_ParticleStepInitialPhi[MAXSTEPS]
float t_VolumeZaxis1[MAXSTEPS]
float t_ParticleStepInitialPz[MAXSTEPS]
float getStepInitialBeta(int is)
float t_ParticleStepFinalGamma[MAXSTEPS]
int t_ParticleStepPostInteraction[MAXSTEPS]
float t_DeltaMB_COL[MAXSTEPS]
int t_VolumeID[MAXSTEPS]
float t_VolumeY[MAXSTEPS]
float getStepInitialMass(int is)
double getStepInitialZ(int is)
virtual void fillStartTrack()
float getStepInitialPy(int is)
int t_ParticleStepID[MAXSTEPS]
float getStepInitialPt(int is)
float getEta() const
float getStepFinalMass(int is)
static const int MAXSTEPS
float t_ParticleStepFinalPy[MAXSTEPS]
float t_ParticleStepInitialPy[MAXSTEPS]
float getStepFinalPt(int is)
float t_DeltaMB_OTH[MAXSTEPS]
float t_ParticleStepInitialEta[MAXSTEPS]
double getStepFinalY(int is)
float t_VolumeZaxis3[MAXSTEPS]
double t_InitialY[MAXSTEPS]
int getStepMaterialID(int is)
float t_VolumeYaxis2[MAXSTEPS]
float t_ParticleStepInitialEnergy[MAXSTEPS]
char * t_MaterialName[MAXSTEPS]
float getCoolingDmb(int is) const
std::string getStepMaterialName(int is)
int t_ParticleStepPreInteraction[MAXSTEPS]
float getCoolingDil(int is) const
float getStepFinalPy(int is)
float getSupportDmb(int is) const
float t_ParticleStepFinalMass[MAXSTEPS]
float t_ParticleStepInitialBeta[MAXSTEPS]
float t_DeltaIL_COL[MAXSTEPS]
float getStepDmb(int is)
std::string getStepVolumeName(int is)
double getStepFinalZ(int is)
float getStepVolumeY(int is)
float getEnergy() const
float t_MaterialDensity[MAXSTEPS]
float getPhi() const
float t_DeltaIL_AIR[MAXSTEPS]
float getStepFinalEta(int is)
float t_ParticleStepFinalBeta[MAXSTEPS]
float t_VolumeZaxis2[MAXSTEPS]
float t_ParticleStepFinalPz[MAXSTEPS]
float t_ParticleStepInitialGamma[MAXSTEPS]
double t_FinalZ[MAXSTEPS]
float t_VolumeZ[MAXSTEPS]
double getStepInitialY(int is)
float t_DeltaMB_ELE[MAXSTEPS]
double getStepInitialX(int is)
float t_DeltaMB[MAXSTEPS]
float t_VolumeX[MAXSTEPS]
float getMass() const
virtual void fillPerStep()
int getNumberOfSteps() const
float t_DeltaMB_SUP[MAXSTEPS]
float getStepFinalGamma(int is)
float t_DeltaIL[MAXSTEPS]
float getSensitiveDil(int is) const
CLHEP::HepLorentzVector getStepVolumeXaxis(int is)
float getStepFinalPx(int is)
float getAirDil(int is) const
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
float t_VolumeYaxis1[MAXSTEPS]
float t_DeltaIL_SUP[MAXSTEPS]
float getCablesDil(int is) const
tuple filename
Definition: lut2db_cfg.py:20
float getStepMaterialDensity(int is)
float t_ParticleStepInitialMass[MAXSTEPS]
tuple cout
Definition: gather_cfg.py:121
double t_FinalY[MAXSTEPS]
float getStepVolumeX(int is)
int getStepPostProcess(int is)
float getStepFinalBeta(int is)
float getCablesDmb(int is) const
float getStepFinalPz(int is)
float getOtherDmb(int is) const
float t_VolumeXaxis2[MAXSTEPS]
float getStepDil(int is)
float getTotalIL() const
float getStepInitialPx(int is)
float getStepInitialEta(int is)
float getElectronicsDmb(int is) const
CLHEP::HepLorentzVector getStepVolumeZaxis(int is)
float getStepInitialPz(int is)
int t_VolumeCopy[MAXSTEPS]
double t_InitialZ[MAXSTEPS]
float t_MaterialX0[MAXSTEPS]
int getStepPreProcess(int is)