CMS 3D CMS Logo

MaterialBudgetData.cc
Go to the documentation of this file.
2 
3 #include "G4Step.hh"
4 #include "G4Material.hh"
5 #include "G4EventManager.hh"
6 #include "G4Event.hh"
7 
9 {
10  //instantiate categorizer to assign an ID to volumes and materials
12  allStepsToTree = false;
13  isHGCal = false;
14  densityConvertionFactor = 6.24E18;
15 }
16 
18 
19 }
20 
22 {
23  allStepsToTree = true;
24 }
25 
26 
27 void MaterialBudgetData::dataStartTrack( const G4Track* aTrack )
28 {
29 
30  const G4ThreeVector& dir = aTrack->GetMomentum() ;
31 
32  if( myMaterialBudgetCategorizer == nullptr){
33  myMaterialBudgetCategorizer = std::make_unique<MaterialBudgetCategorizer>();
34  }
35 
36  theStepN=0;
37  theTotalMB=0;
38  theTotalIL=0;
39  theEta=0;
40  thePhi=0;
41  theID=0;
42  thePt=0;
43  theEnergy=0;
44  theMass=0;
45 
46  theSupportMB = 0.;
47  theSensitiveMB = 0.;
48  theCoolingMB = 0.;
49  theElectronicsMB = 0.;
50  theOtherMB = 0.;
51 
52  //HGCal
53  theAirMB = 0.;
54  theCablesMB = 0.;
55  theCopperMB = 0.;
57  theLeadMB = 0.;
59  theSiliconMB = 0.;
61  theWCuMB = 0.;
62 
63  theSupportIL = 0.;
64  theSensitiveIL = 0.;
65  theCoolingIL = 0.;
66  theElectronicsIL = 0.;
67  theOtherIL = 0.;
68 
69  //HGCal
70  theAirIL = 0.;
71  theCablesIL = 0.;
72  theCopperIL = 0.;
74  theLeadIL = 0.;
76  theSiliconIL = 0.;
78  theWCuIL = 0.;
79 
84  theOtherFractionMB = 0.;
85  //HGCal
86  theAirFractionMB = 0.;
87  theCablesFractionMB = 0.;
88  theCopperFractionMB = 0.;
90  theLeadFractionMB = 0.;
94  theWCuFractionMB = 0.;
95 
100  theOtherFractionIL = 0.;
101  //HGCal
102  theAirFractionIL = 0.;
103  theCablesFractionIL = 0.;
104  theCopperFractionIL = 0.;
106  theLeadFractionIL = 0.;
108  theSiliconFractionIL = 0.;
110  theWCuFractionIL = 0.;
111 
112  theID = (int)(aTrack->GetDefinition()->GetPDGEncoding());
113  thePt = dir.perp();
114  if( dir.theta() != 0 ) {
115  theEta = dir.eta();
116  } else {
117  theEta = -99;
118  }
119  thePhi = dir.phi();
120  theEnergy = aTrack->GetTotalEnergy();
121  theMass = aTrack->GetDefinition()->GetPDGMass();
122 }
123 
124 
125 void MaterialBudgetData::dataEndTrack( const G4Track* aTrack )
126 {
127  LogDebug("MaterialBudget") << "MaterialBudgetData: [OVAL] MaterialBudget "
128  << G4EventManager::GetEventManager()->GetConstCurrentEvent()->GetEventID()
129  << " Eta:" << theEta << " Phi:" << thePhi << " TotalMB" << theTotalMB;
130 
131  LogDebug("MaterialBudget") << "MaterialBudgetData:" << theStepN << "Recorded steps ";
132 
133  if (!isHGCal){
134 
135  LogDebug("Material Budget") <<"MaterialBudgetData: Radiation Length "
136  << G4EventManager::GetEventManager()->GetConstCurrentEvent()->GetEventID()
137  << " Eta" << theEta << " Phi" << thePhi
138  << " TotalMB" << theTotalMB
139  << " SUP " << theSupportMB << " SEN " << theSensitiveMB
140  << " CAB " << theCablesMB << " COL " << theCoolingMB
141  << " ELE " << theElectronicsMB << " other " << theOtherMB
142  << " Air " << theAirMB;
143 
144  LogDebug("Material Budget") << "MaterialBudgetData: Interaction Length "
145  << G4EventManager::GetEventManager()->GetConstCurrentEvent()->GetEventID()
146  << " Eta " << theEta << " Phi " << thePhi
147  << " TotalIL " << theTotalIL
148  << " SUP " << theSupportIL << " SEN " << theSensitiveIL
149  << " CAB " << theCablesIL << " COL " << theCoolingIL
150  << " ELE " << theElectronicsIL << " other " << theOtherIL
151  << " Air " << theAirIL << std::endl;
152 
153  } else {
154 
155  LogDebug("MaterialBudget") << "MaterialBudgetData: HGCal Material Budget: Radiation Length "
156  << G4EventManager::GetEventManager()->GetConstCurrentEvent()->GetEventID()
157  << " Eta " << theEta << " Phi " << thePhi
158  << " TotaLMB" << theTotalMB
159  << " theCopperMB " << theCopperMB << " theH_ScintillatorMB " << theH_ScintillatorMB
160  << " CAB " << theCablesMB << " theLeadMB " << theLeadMB << " theM_NEMA_FR4_plateMB "
161  << theM_NEMA_FR4_plateMB << " theSiliconMB " << theSiliconMB
162  << " theAirMB " << theAirMB << " theStainlessSteelMB " << theStainlessSteelMB
163  << " theWCuMB " << theWCuMB;
164 
165  LogDebug("MaterialBudget") << "MaterialBudgetData: HGCal Material Budget: Interaction Length "
166  << G4EventManager::GetEventManager()->GetConstCurrentEvent()->GetEventID()
167  << " Eta " << theEta << " Phi " << thePhi
168  << " TotalIL " << theTotalIL << " theCopperIL " << theCopperIL
169  << " theH_ScintillatorIL " << theH_ScintillatorIL
170  << " CAB " << theCablesIL << " theLeadIL " << theLeadIL
171  << " theM_NEMA_FR4_plateIL " << theM_NEMA_FR4_plateIL
172  << " theSiliconIL " << theSiliconIL << " Air "
173  << theAirIL << " theStainlessSteelIL " << theStainlessSteelIL
174  << " theWCuIL " << theWCuIL << std::endl;
175  }
176 }
177 
178 void MaterialBudgetData::dataPerStep( const G4Step* aStep )
179 {
180  assert(aStep);
181  G4StepPoint* prePoint = aStep->GetPreStepPoint();
182  G4StepPoint* postPoint = aStep->GetPostStepPoint();
183  assert(prePoint);
184  assert(postPoint);
185  G4Material * theMaterialPre = prePoint->GetMaterial();
186  assert(theMaterialPre);
187 
188  CLHEP::Hep3Vector prePos = prePoint->GetPosition();
189  CLHEP::Hep3Vector postPos = postPoint->GetPosition();
190 
191  G4double steplen = aStep->GetStepLength();
192 
193  G4double radlen = theMaterialPre->GetRadlen();
194  G4double intlen = theMaterialPre->GetNuclearInterLength();
195  G4double density = theMaterialPre->GetDensity() / densityConvertionFactor; // always g/cm3
196 
197  G4String materialName = theMaterialPre->GetName();
198 
199  LogDebug("MaterialBudget") << "MaterialBudgetData: Material " << materialName
200  << " steplen " << steplen
201  << " radlen " << radlen
202  << " mb " << steplen/radlen;
203 
204  G4String volumeName = aStep->GetPreStepPoint()->GetTouchable()->GetVolume(0)->GetLogicalVolume()->GetName();
205 
206  LogDebug("MaterialBudget") << "MaterialBudgetData: Volume " << volumeName
207  << " Material " << materialName;
208 
209  // instantiate the categorizer
211  int volumeID = myMaterialBudgetCategorizer->volume( volumeName );
212  int materialID = myMaterialBudgetCategorizer->material( materialName );
213 
214  LogDebug("MaterialBudget") << "MaterialBudgetData: Volume ID " << volumeID
215  << " Material ID " << materialID;
216 
217  // FIXME: Both volume ID and material ID are zeros, so this part is not executed leaving all
218  // values as zeros.
219 
220  if (!isHGCal){
221 
222  bool isCtgOk = !myMaterialBudgetCategorizer->x0fraction(materialName).empty()
223  && !myMaterialBudgetCategorizer->l0fraction(materialName).empty()
224  && (myMaterialBudgetCategorizer->x0fraction(materialName).size() == 7) /*7 Categories*/
225  && (myMaterialBudgetCategorizer->l0fraction(materialName).size() == 7);
226 
227  if(!isCtgOk)
228  {
229  theOtherFractionMB = 1;
230  theOtherFractionIL = 1;
231 
232  edm::LogWarning("MaterialBudget")
233  << "MaterialBudgetData: Material forced to 'Other': " << materialName
234  << " in volume " << volumeName << ". Check Categorization.";
235 
236  }
237  else
238  {
239  theSupportFractionMB = myMaterialBudgetCategorizer->x0fraction(materialName)[0];
240  theSensitiveFractionMB = myMaterialBudgetCategorizer->x0fraction(materialName)[1];
241  theCablesFractionMB = myMaterialBudgetCategorizer->x0fraction(materialName)[2];
242  theCoolingFractionMB = myMaterialBudgetCategorizer->x0fraction(materialName)[3];
243  theElectronicsFractionMB = myMaterialBudgetCategorizer->x0fraction(materialName)[4];
244  theOtherFractionMB = myMaterialBudgetCategorizer->x0fraction(materialName)[5];
245  theAirFractionMB = myMaterialBudgetCategorizer->x0fraction(materialName)[6];
246 
247  if(theOtherFractionMB!=0)
248  edm::LogWarning("MaterialBudget") << "MaterialBudgetData: Material found with no category: " << materialName
249  << " in volume " << volumeName;
250 
251  theSupportFractionIL = myMaterialBudgetCategorizer->l0fraction(materialName)[0];
252  theSensitiveFractionIL = myMaterialBudgetCategorizer->l0fraction(materialName)[1];
253  theCablesFractionIL = myMaterialBudgetCategorizer->l0fraction(materialName)[2];
254  theCoolingFractionIL = myMaterialBudgetCategorizer->l0fraction(materialName)[3];
255  theElectronicsFractionIL = myMaterialBudgetCategorizer->l0fraction(materialName)[4];
256  theOtherFractionIL = myMaterialBudgetCategorizer->l0fraction(materialName)[5];
257  theAirFractionIL = myMaterialBudgetCategorizer->l0fraction(materialName)[6];
258 
259  if(theOtherFractionIL!=0)
260  edm::LogWarning("MaterialBudget") << "MaterialBudgetData: Material found with no category: " << materialName
261  << " in volume " << volumeName;
262  }
263  } else { // isHGCal
264 
265  bool isHGCalx0fractionEmpty = myMaterialBudgetCategorizer->HGCalx0fraction(materialName).empty();
266  bool isHGCall0fractionEmpty = myMaterialBudgetCategorizer->HGCall0fraction(materialName).empty();
267 
268  if( isHGCalx0fractionEmpty && isHGCall0fractionEmpty ) {
269  theOtherFractionMB = 1;
270  theOtherFractionIL = 1;
271 
272  edm::LogWarning("MaterialBudget") << "MaterialBudgetData: Material forced to 'Other': " << materialName
273  << " in volume " << volumeName;
274  } else{
275 
276  theAirFractionMB = myMaterialBudgetCategorizer->HGCalx0fraction(materialName)[0];
277  theCablesFractionMB = myMaterialBudgetCategorizer->HGCalx0fraction(materialName)[1];
278  theCopperFractionMB = myMaterialBudgetCategorizer->HGCalx0fraction(materialName)[2];
279  theH_ScintillatorFractionMB = myMaterialBudgetCategorizer->HGCalx0fraction(materialName)[3];
280  theLeadFractionMB = myMaterialBudgetCategorizer->HGCalx0fraction(materialName)[4];
281  theM_NEMA_FR4_plateFractionMB = myMaterialBudgetCategorizer->HGCalx0fraction(materialName)[5];
282  theSiliconFractionMB = myMaterialBudgetCategorizer->HGCalx0fraction(materialName)[6];
283  theStainlessSteelFractionMB = myMaterialBudgetCategorizer->HGCalx0fraction(materialName)[7];
284  theWCuFractionMB = myMaterialBudgetCategorizer->HGCalx0fraction(materialName)[8];
285  theOtherFractionMB = myMaterialBudgetCategorizer->HGCalx0fraction(materialName)[9];
286 
287 
288  if(theOtherFractionMB!=0)
289  edm::LogWarning("MaterialBudget") << "MaterialBudgetData: Material found with no category: " << materialName
290  << " in volume " << volumeName << std::endl;
291 
292  theAirFractionIL = myMaterialBudgetCategorizer->HGCall0fraction(materialName)[0];
293  theCablesFractionIL = myMaterialBudgetCategorizer->HGCall0fraction(materialName)[1];
294  theCopperFractionIL = myMaterialBudgetCategorizer->HGCall0fraction(materialName)[2];
295  theH_ScintillatorFractionIL = myMaterialBudgetCategorizer->HGCall0fraction(materialName)[3];
296  theLeadFractionIL = myMaterialBudgetCategorizer->HGCall0fraction(materialName)[4];
297  theM_NEMA_FR4_plateFractionIL = myMaterialBudgetCategorizer->HGCall0fraction(materialName)[5];
298  theSiliconFractionIL = myMaterialBudgetCategorizer->HGCall0fraction(materialName)[6];
299  theStainlessSteelFractionIL = myMaterialBudgetCategorizer->HGCall0fraction(materialName)[7];
300  theWCuFractionIL = myMaterialBudgetCategorizer->HGCall0fraction(materialName)[8];
301  theOtherFractionIL = myMaterialBudgetCategorizer->HGCall0fraction(materialName)[9];
302 
303 
304  if(theOtherFractionIL!=0)
305  edm::LogWarning("MaterialBudget") << "MaterialBudgetData: Material found with no category " << materialName
306  << " in volume " << volumeName << std::endl;
307  }
308  }
309 
310  float dmb = steplen/radlen;
311  float dil = steplen/intlen;
312 
313  G4VPhysicalVolume* pv = aStep->GetPreStepPoint()->GetPhysicalVolume();
314  const G4VTouchable* t = aStep->GetPreStepPoint()->GetTouchable();
315  const G4ThreeVector& objectTranslation = t->GetTranslation();
316  const G4RotationMatrix* objectRotation = t->GetRotation();
317  const G4VProcess* interactionPre = prePoint->GetProcessDefinedStep();
318  const G4VProcess* interactionPost = postPoint->GetProcessDefinedStep();
319 
320  G4Track* track = aStep->GetTrack();
321  if(theStepN==0)
322  LogDebug("MaterialBudget") << "MaterialBudgetData: Simulated Particle " << theID
323  << "\tMass " << theMass << " MeV/c2"
324  << "\tPt = " << thePt << " MeV/c"
325  << "\tEta = " << theEta
326  << "\tPhi = " << thePhi
327  << "\tEnergy = " << theEnergy << " MeV";
328 
329  //fill data per step
330  if( allStepsToTree ){
331  assert(theStepN < MAXNUMBERSTEPS);
333  theDmb[theStepN] = dmb;
334  theDil[theStepN] = dil;
340  //HGCal
349  theWCuDmb[theStepN] = (dmb * theWCuFractionMB);
350 
356  //HGCal
365  theWCuDil[theStepN] = (dil * theWCuFractionIL);
366 
367  theInitialX[theStepN] = prePos.x();
368  theInitialY[theStepN] = prePos.y();
369  theInitialZ[theStepN] = prePos.z();
370  theFinalX[theStepN] = postPos.x();
371  theFinalY[theStepN] = postPos.y();
372  theFinalZ[theStepN] = postPos.z();
373  theVolumeID[theStepN] = volumeID;
374  theVolumeName[theStepN] = volumeName;
375  theVolumeCopy[theStepN] = pv->GetCopyNo();
376  theVolumeX[theStepN] = objectTranslation.x();
377  theVolumeY[theStepN] = objectTranslation.y();
378  theVolumeZ[theStepN] = objectTranslation.z();
379  theVolumeXaxis1[theStepN] = objectRotation->xx();
380  theVolumeXaxis2[theStepN] = objectRotation->xy();
381  theVolumeXaxis3[theStepN] = objectRotation->xz();
382  theVolumeYaxis1[theStepN] = objectRotation->yx();
383  theVolumeYaxis2[theStepN] = objectRotation->yy();
384  theVolumeYaxis3[theStepN] = objectRotation->yz();
385  theVolumeZaxis1[theStepN] = objectRotation->zx();
386  theVolumeZaxis2[theStepN] = objectRotation->zy();
387  theVolumeZaxis3[theStepN] = objectRotation->zz();
388  theMaterialID[theStepN] = materialID;
389  theMaterialName[theStepN] = materialName;
390  theMaterialX0[theStepN] = radlen;
391  theMaterialLambda0[theStepN] = intlen;
392  theMaterialDensity[theStepN] = density;
393  theStepID[theStepN] = track->GetDefinition()->GetPDGEncoding();
394  theStepInitialPt[theStepN] = prePoint->GetMomentum().perp();
395  theStepInitialEta[theStepN] = prePoint->GetMomentum().eta();
396  theStepInitialPhi[theStepN] = prePoint->GetMomentum().phi();
397  theStepInitialEnergy[theStepN] = prePoint->GetTotalEnergy();
398  theStepInitialPx[theStepN] = prePoint->GetMomentum().x();
399  theStepInitialPy[theStepN] = prePoint->GetMomentum().y();
400  theStepInitialPz[theStepN] = prePoint->GetMomentum().z();
401  theStepInitialBeta[theStepN] = prePoint->GetBeta();
402  theStepInitialGamma[theStepN] = prePoint->GetGamma();
403  theStepInitialMass[theStepN] = prePoint->GetMass();
404  theStepFinalPt[theStepN] = postPoint->GetMomentum().perp();
405  theStepFinalEta[theStepN] = postPoint->GetMomentum().eta();
406  theStepFinalPhi[theStepN] = postPoint->GetMomentum().phi();
407  theStepFinalEnergy[theStepN] = postPoint->GetTotalEnergy();
408  theStepFinalPx[theStepN] = postPoint->GetMomentum().x();
409  theStepFinalPy[theStepN] = postPoint->GetMomentum().y();
410  theStepFinalPz[theStepN] = postPoint->GetMomentum().z();
411  theStepFinalBeta[theStepN] = postPoint->GetBeta();
412  theStepFinalGamma[theStepN] = postPoint->GetGamma();
413  theStepFinalMass[theStepN] = postPoint->GetMass();
414  int preProcType = -99;
415  int postProcType = -99;
416  if (interactionPre) preProcType = interactionPre->GetProcessType();
417  theStepPreProcess[theStepN] = preProcType;
418  if (interactionPost) postProcType = interactionPost->GetProcessType();
419  theStepPostProcess[theStepN] = postProcType;
420 
421  LogDebug("MaterialBudget")
422  << "MaterialBudgetData: Step " << theStepN
423  << "\tDelta MB = " << theDmb[theStepN]
424  << std::endl
425  << " Support " << theSupportDmb[theStepN]
426  << " Sensitive " << theSensitiveDmb[theStepN]
427  << " Cables " << theCablesDmb[theStepN]
428  << " Cooling " << theCoolingDmb[theStepN]
429  << " Electronics " << theElectronicsDmb[theStepN]
430  << " Other " << theOtherDmb[theStepN]
431  << " Air " << theAirDmb[theStepN]
432  << std::endl
433  << "\tDelta IL = " << theDil[theStepN]
434  << std::endl
435  << " Support " << theSupportDil[theStepN]
436  << " Sensitive " << theSensitiveDil[theStepN]
437  << " Cables " << theCablesDil[theStepN]
438  << " Cooling " << theCoolingDil[theStepN]
439  << " Electronics " << theElectronicsDil[theStepN]
440  << " Other " << theOtherDil[theStepN]
441  << " Air " << theAirDil[theStepN];
442 
443  if (interactionPre)
444  LogDebug("MaterialBudget")
445  << "MaterialBudgetData: Process Pre " << interactionPre->GetProcessName()
446  << " type " << theStepPreProcess[theStepN]
447  << " name " << interactionPre->GetProcessTypeName(G4ProcessType(theStepPreProcess[theStepN]));
448  if (interactionPost)
449  LogDebug("MaterialBudget")
450  << "MaterialBudgetData: Process Post " << interactionPost->GetProcessName()
451  << " type " << theStepPostProcess[theStepN]
452  << " name "<< interactionPost->GetProcessTypeName(G4ProcessType(theStepPostProcess[theStepN]))
453  << " Pre x = " << theInitialX[theStepN]
454  << " y = " << theInitialY[theStepN]
455  << " z = " << theInitialZ[theStepN]
456  << " Polar Radius = " << sqrt(prePos.x()*prePos.x()+prePos.y()*prePos.y())
457  << " Pt = " << theStepInitialPt[theStepN]
458  << " Energy = " << theStepInitialEnergy[theStepN]
459  << " Final: "
460  << " Post x = " << theFinalX[theStepN]
461  << " y = " << theFinalY[theStepN]
462  << " z = " << theFinalZ[theStepN]
463  << " Polar Radius = " << sqrt(postPos.x()*postPos.x()+postPos.y()*postPos.y())
464  << " Pt = " << theStepFinalPt[theStepN]
465  << " Energy = " << theStepFinalEnergy[theStepN]
466  << std::endl
467  << " Volume " << volumeID << " name " << theVolumeName[theStepN]
468  << " copy number " << theVolumeCopy[theStepN]
469  << " material " << theMaterialID[theStepN] << " " << theMaterialName[theStepN]
470  << " Density = " << theMaterialDensity[theStepN] << " g/cm3"
471  << " X0 = " << theMaterialX0[theStepN] << " mm"
472  << " Lambda0 = " << theMaterialLambda0[theStepN] << " mm"
473  << std::endl
474  << " Particle " << theStepID[theStepN]
475  << " Initial Pt = " << theStepInitialPt[theStepN] << " MeV/c"
476  << " eta = " << theStepInitialEta[theStepN]
477  << " phi = " << theStepInitialPhi[theStepN]
478  << " Energy = " << theStepInitialEnergy[theStepN] << " MeV"
479  << " Mass = " << theStepInitialMass[theStepN] << " MeV/c2"
480  << " Beta = " << theStepInitialBeta[theStepN]
481  << " Gamma = " << theStepInitialGamma[theStepN]
482  << std::endl
483  << " Particle " << theStepID[theStepN]
484  << " Final Pt = " << theStepFinalPt[theStepN] << " MeV/c"
485  << " eta = " << theStepFinalEta[theStepN]
486  << " phi = " << theStepFinalPhi[theStepN]
487  << " Energy = " << theStepFinalEnergy[theStepN] << " MeV"
488  << " Mass = " << theStepFinalMass[theStepN] << " MeV/c2"
489  << " Beta = " << theStepFinalBeta[theStepN]
490  << " Gamma = " << theStepFinalGamma[theStepN]
491  << std::endl
492  << " Volume Centre x = " << theVolumeX[theStepN]
493  << " y = " << theVolumeY[theStepN]
494  << " z = " << theVolumeZ[theStepN]
495  << "Polar Radius = " << sqrt( theVolumeX[theStepN]*theVolumeX[theStepN] +
496  theVolumeY[theStepN]*theVolumeY[theStepN] )
497  << std::endl
498  << " x axis = ("
499  << theVolumeXaxis1[theStepN] << ","
500  << theVolumeXaxis2[theStepN] << ","
501  << theVolumeXaxis3[theStepN] << ")"
502  << std::endl
503  << " y axis = ("
504  << theVolumeYaxis1[theStepN] << ","
505  << theVolumeYaxis2[theStepN] << ","
506  << theVolumeYaxis3[theStepN] << ")"
507  << std::endl
508  << " z axis = ("
509  << theVolumeZaxis1[theStepN] << ","
510  << theVolumeZaxis2[theStepN] << ","
511  << theVolumeZaxis3[theStepN] << ")"
512  << std::endl
513  << " Secondaries"
514  << std::endl;
515 
516  for(G4TrackVector::const_iterator iSec = aStep->GetSecondary()->begin(); iSec!=aStep->GetSecondary()->end(); iSec++) {
517  LogDebug("MaterialBudget")
518  << "MaterialBudgetData: tid " << (*iSec)->GetDefinition()->GetPDGEncoding()
519  << " created through process type " << (*iSec)->GetCreatorProcess()->GetProcessType()
520  << (*iSec)->GetCreatorProcess()->GetProcessTypeName(G4ProcessType((*iSec)->GetCreatorProcess()->GetProcessType()));
521  }
522  }
523 
524  theTrkLen = aStep->GetTrack()->GetTrackLength();
525  thePVname = pv->GetName();
526  thePVcopyNo = pv->GetCopyNo();
527  theRadLen = radlen;
528  theIntLen = intlen;
529  theTotalMB += dmb;
530  theTotalIL += dil;
531 
536  theOtherMB += (dmb * theOtherFractionMB);
537 
538  //HGCal
539  theAirMB += (dmb * theAirFractionMB);
540  theCablesMB += (dmb * theCablesFractionMB);
541  theCopperMB += (dmb * theCopperFractionMB);
543  theLeadMB += (dmb * theLeadFractionMB);
547  theWCuMB += (dmb * theWCuFractionMB);
548 
553  theOtherIL += (dil * theOtherFractionIL);
554  //HGCal
555  theAirIL += (dil * theAirFractionIL);
556  theCablesIL += (dil * theCablesFractionIL);
557  theCopperIL += (dil * theCopperFractionIL);
559  theLeadIL += (dil * theLeadFractionIL);
563  theWCuIL += (dil * theWCuFractionIL);
564 
565 
566 
567  // rr
568 
569  theStepN++;
570 
571 }
572 
573 
#define LogDebug(id)
std::array< float, MAXNUMBERSTEPS > theStepInitialMass
std::array< float, MAXNUMBERSTEPS > theWCuDil
std::array< float, MAXNUMBERSTEPS > theMaterialX0
std::array< float, MAXNUMBERSTEPS > theVolumeZaxis1
std::array< float, MAXNUMBERSTEPS > theAirDil
std::array< float, MAXNUMBERSTEPS > theStepInitialBeta
std::array< float, MAXNUMBERSTEPS > theSupportDmb
std::array< float, MAXNUMBERSTEPS > theStepFinalEta
std::array< float, MAXNUMBERSTEPS > theM_NEMA_FR4_plateDmb
std::array< int, MAXNUMBERSTEPS > theStepPreProcess
std::array< float, MAXNUMBERSTEPS > theStainlessSteelDil
std::array< int, MAXNUMBERSTEPS > theStepPostProcess
std::array< float, MAXNUMBERSTEPS > theSiliconDil
std::array< float, MAXNUMBERSTEPS > theCopperDmb
std::array< double, MAXNUMBERSTEPS > theFinalX
std::array< float, MAXNUMBERSTEPS > theStepFinalBeta
std::array< float, MAXNUMBERSTEPS > theAirDmb
std::array< float, MAXNUMBERSTEPS > theStepInitialPt
std::array< float, MAXNUMBERSTEPS > theWCuDmb
std::array< float, MAXNUMBERSTEPS > theStepInitialPz
std::array< float, MAXNUMBERSTEPS > theStepInitialPx
std::array< float, MAXNUMBERSTEPS > theStepFinalPhi
std::array< float, MAXNUMBERSTEPS > theVolumeYaxis1
std::array< float, MAXNUMBERSTEPS > theM_NEMA_FR4_plateDil
std::array< double, MAXNUMBERSTEPS > theInitialY
std::array< float, MAXNUMBERSTEPS > theStepFinalGamma
std::array< float, MAXNUMBERSTEPS > theVolumeZaxis2
std::array< float, MAXNUMBERSTEPS > theStepFinalMass
std::unique_ptr< MaterialBudgetCategorizer > myMaterialBudgetCategorizer
std::array< float, MAXNUMBERSTEPS > theSiliconDmb
std::array< int, MAXNUMBERSTEPS > theVolumeCopy
std::array< float, MAXNUMBERSTEPS > theLeadDmb
std::array< double, MAXNUMBERSTEPS > theInitialZ
std::array< float, MAXNUMBERSTEPS > theMaterialDensity
std::array< float, MAXNUMBERSTEPS > theVolumeXaxis1
std::array< float, MAXNUMBERSTEPS > theOtherDmb
std::array< int, MAXNUMBERSTEPS > theStepID
T sqrt(T t)
Definition: SSEVec.h:18
void dataEndTrack(const G4Track *aTrack)
std::array< float, MAXNUMBERSTEPS > theSensitiveDil
std::array< double, MAXNUMBERSTEPS > theFinalY
def pv(vc)
Definition: MetAnalyzer.py:7
void dataPerStep(const G4Step *aStep)
std::array< float, MAXNUMBERSTEPS > theStepFinalPx
std::array< float, MAXNUMBERSTEPS > theStepInitialEta
std::array< float, MAXNUMBERSTEPS > theStepInitialPhi
std::array< float, MAXNUMBERSTEPS > theCoolingDmb
std::array< float, MAXNUMBERSTEPS > theVolumeX
std::array< float, MAXNUMBERSTEPS > theLeadDil
std::array< float, MAXNUMBERSTEPS > theCablesDil
std::array< float, MAXNUMBERSTEPS > theVolumeXaxis2
std::array< float, MAXNUMBERSTEPS > theSupportDil
std::array< float, MAXNUMBERSTEPS > theVolumeXaxis3
std::array< float, MAXNUMBERSTEPS > theStepFinalPt
std::array< float, MAXNUMBERSTEPS > theStepFinalPy
std::array< float, MAXNUMBERSTEPS > theDil
std::array< float, MAXNUMBERSTEPS > theMaterialLambda0
std::array< double, MAXNUMBERSTEPS > theFinalZ
std::array< float, MAXNUMBERSTEPS > theVolumeZ
std::array< int, MAXNUMBERSTEPS > theVolumeID
std::array< float, MAXNUMBERSTEPS > theVolumeY
std::array< float, MAXNUMBERSTEPS > theDmb
std::array< std::string, MAXNUMBERSTEPS > theVolumeName
void dataStartTrack(const G4Track *aTrack)
std::array< float, MAXNUMBERSTEPS > theStepFinalEnergy
std::array< float, MAXNUMBERSTEPS > theH_ScintillatorDmb
std::array< float, MAXNUMBERSTEPS > theStepInitialGamma
std::array< float, MAXNUMBERSTEPS > theSensitiveDmb
std::array< int, MAXNUMBERSTEPS > theMaterialID
std::array< float, MAXNUMBERSTEPS > theElectronicsDmb
std::array< float, MAXNUMBERSTEPS > theVolumeYaxis3
std::array< float, MAXNUMBERSTEPS > theVolumeYaxis2
std::array< float, MAXNUMBERSTEPS > theCoolingDil
std::array< float, MAXNUMBERSTEPS > theH_ScintillatorDil
std::array< float, MAXNUMBERSTEPS > theOtherDil
std::array< float, MAXNUMBERSTEPS > theStepInitialEnergy
std::array< float, MAXNUMBERSTEPS > theElectronicsDil
dbl *** dir
Definition: mlp_gen.cc:35
std::array< float, MAXNUMBERSTEPS > theStainlessSteelDmb
std::array< float, MAXNUMBERSTEPS > theCablesDmb
std::array< float, MAXNUMBERSTEPS > theCopperDil
std::array< std::string, MAXNUMBERSTEPS > theMaterialName
std::array< float, MAXNUMBERSTEPS > theVolumeZaxis3
std::array< float, MAXNUMBERSTEPS > theStepInitialPy
std::array< float, MAXNUMBERSTEPS > theStepFinalPz
std::array< double, MAXNUMBERSTEPS > theInitialX