Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:32:13

0001 
0002 #ifndef MaterialBudgetData_h
0003 #define MaterialBudgetData_h 1
0004 
0005 #include "Validation/Geometry/interface/MaterialBudgetCategorizer.h"
0006 
0007 #include "G4ThreeVector.hh"
0008 
0009 #include <CLHEP/Vector/LorentzVector.h>
0010 
0011 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0012 
0013 #include <memory>
0014 #include <array>
0015 
0016 class MaterialBudgetData;
0017 class G4Step;
0018 class G4Track;
0019 
0020 typedef std::map<std::string, float> msf;
0021 
0022 class MaterialBudgetData {
0023 public:
0024   MaterialBudgetData();
0025   ~MaterialBudgetData();
0026 
0027   void dataStartTrack(const G4Track* aTrack);
0028   void dataEndTrack(const G4Track* aTrack);
0029   void dataPerStep(const G4Step* aStep);
0030 
0031   void SetAllStepsToTree();
0032 
0033 public:
0034   float getTotalMB() const { return theTotalMB; }
0035 
0036   float getSupportFractionMB() const { return theSupportFractionMB; }
0037   float getSensitiveFractionMB() const { return theSensitiveFractionMB; }
0038   float getCablesFractionMB() const { return theCablesFractionMB; }
0039   float getCoolingFractionMB() const { return theCoolingFractionMB; }
0040   float getElectronicsFractionMB() const { return theElectronicsFractionMB; }
0041   float getOtherFractionMB() const { return theOtherFractionMB; }
0042   float getAirFractionMB() const { return theAirFractionMB; }
0043   //HGCal
0044   float getCopperFractionMB() const { return theCopperFractionMB; }
0045   float getH_ScintillatorFractionMB() const { return theH_ScintillatorFractionMB; }
0046   float getLeadFractionMB() const { return theLeadFractionMB; }
0047   float getEpoxyFractionMB() const { return theEpoxyFractionMB; }
0048   float getKaptonFractionMB() const { return theKaptonFractionMB; }
0049   float getAluminiumFractionMB() const { return theAluminiumFractionMB; }
0050   float getHGC_G10_FR4FractionMB() const { return theHGC_G10_FR4FractionMB; }
0051   float getSiliconFractionMB() const { return theSiliconFractionMB; }
0052   float getStainlessSteelFractionMB() const { return theStainlessSteelFractionMB; }
0053   float getWCuFractionMB() const { return theWCuFractionMB; }
0054   float getPolystyreneFractionMB() const { return thePolystyreneFractionMB; }
0055   float getHGC_EEConnectorFractionMB() const { return theHGC_EEConnectorFractionMB; }
0056   float getHGC_HEConnectorFractionMB() const { return theHGC_HEConnectorFractionMB; }
0057 
0058   float getSupportMB() const { return theSupportMB; }
0059   float getSensitiveMB() const { return theSensitiveMB; }
0060   float getCablesMB() const { return theCablesMB; }
0061   float getCoolingMB() const { return theCoolingMB; }
0062   float getElectronicsMB() const { return theElectronicsMB; }
0063   float getOtherMB() const { return theOtherMB; }
0064   float getAirMB() const { return theAirMB; }
0065   //HGCal
0066   float getCopperMB() const { return theCopperMB; }
0067   float getH_ScintillatorMB() const { return theH_ScintillatorMB; }
0068   float getLeadMB() const { return theLeadMB; }
0069   float getEpoxyMB() const { return theEpoxyMB; }
0070   float getKaptonMB() const { return theKaptonMB; }
0071   float getAluminiumMB() const { return theAluminiumMB; }
0072   float getHGC_G10_FR4MB() const { return theHGC_G10_FR4MB; }
0073   float getSiliconMB() const { return theSiliconMB; }
0074   float getStainlessSteelMB() const { return theStainlessSteelMB; }
0075   float getWCuMB() const { return theWCuMB; }
0076   float getPolystyreneMB() const { return thePolystyreneMB; }
0077   float getHGC_EEConnectorMB() const { return theHGC_EEConnectorMB; }
0078   float getHGC_HEConnectorMB() const { return theHGC_HEConnectorMB; }
0079 
0080   float getSupportFractionIL() const { return theSupportFractionIL; }
0081   float getSensitiveFractionIL() const { return theSensitiveFractionIL; }
0082   float getCablesFractionIL() const { return theCablesFractionIL; }
0083   float getCoolingFractionIL() const { return theCoolingFractionIL; }
0084   float getElectronicsFractionIL() const { return theElectronicsFractionIL; }
0085   float getOtherFractionIL() const { return theOtherFractionIL; }
0086   float getAirFractionIL() const { return theAirFractionIL; }
0087   float getCopperFractionIL() const { return theCopperFractionIL; }
0088   float getH_ScintillatorFractionIL() const { return theH_ScintillatorFractionIL; }
0089   float getLeadFractionIL() const { return theLeadFractionIL; }
0090   float getEpoxyFractionIL() const { return theEpoxyFractionIL; }
0091   float getKaptonFractionIL() const { return theKaptonFractionIL; }
0092   float getAluminiumFractionIL() const { return theAluminiumFractionIL; }
0093   float getHGC_G10_FR4FractionIL() const { return theHGC_G10_FR4FractionIL; }
0094   float getSiliconFractionIL() const { return theSiliconFractionIL; }
0095   float getStainlessSteelFractionIL() const { return theStainlessSteelFractionIL; }
0096   float getWCuFractionIL() const { return theWCuFractionIL; }
0097   float getPolystyreneFractionIL() const { return thePolystyreneFractionIL; }
0098   float getHGC_EEConnectorFractionIL() const { return theHGC_EEConnectorFractionIL; }
0099   float getHGC_HEConnectorFractionIL() const { return theHGC_HEConnectorFractionIL; }
0100 
0101   float getTotalIL() const { return theTotalIL; }
0102   float getSupportIL() const { return theSupportIL; }
0103   float getSensitiveIL() const { return theSensitiveIL; }
0104   float getCablesIL() const { return theCablesIL; }
0105   float getCoolingIL() const { return theCoolingIL; }
0106   float getElectronicsIL() const { return theElectronicsIL; }
0107   float getOtherIL() const { return theOtherIL; }
0108   float getAirIL() const { return theAirIL; }
0109   float getCopperIL() const { return theCopperIL; }
0110   float getH_ScintillatorIL() const { return theH_ScintillatorIL; }
0111   float getLeadIL() const { return theLeadIL; }
0112   float getEpoxyIL() const { return theEpoxyIL; }
0113   float getKaptonIL() const { return theKaptonIL; }
0114   float getAluminiumIL() const { return theAluminiumIL; }
0115   float getHGC_G10_FR4IL() const { return theHGC_G10_FR4IL; }
0116   float getSiliconIL() const { return theSiliconIL; }
0117   float getStainlessSteelIL() const { return theStainlessSteelIL; }
0118   float getWCuIL() const { return theWCuIL; }
0119   float getPolystyreneIL() const { return thePolystyreneIL; }
0120   float getHGC_EEConnectorIL() const { return theHGC_EEConnectorIL; }
0121   float getHGC_HEConnectorIL() const { return theHGC_HEConnectorIL; }
0122 
0123   float getEta() const { return theEta; }
0124   float getPhi() const { return thePhi; }
0125 
0126   int getID() const { return theID; }
0127   float getPt() const { return thePt; }
0128   float getEnergy() const { return theEnergy; }
0129   float getMass() const { return theMass; }
0130 
0131   int getNumberOfSteps() const { return theStepN; }
0132 
0133   float getTrkLen() const { return theTrkLen; }
0134   std::string getPVname() const { return thePVname; }
0135   int getPVcopyNo() const { return thePVcopyNo; }
0136   float getRadLen() const { return theRadLen; }
0137   float getIntLen() const { return theIntLen; }
0138 
0139   float getStepDmb(int is) { return theDmb[is]; }
0140   float getSupportDmb(int is) const { return theSupportDmb[is]; }
0141   float getSensitiveDmb(int is) const { return theSensitiveDmb[is]; }
0142   float getCablesDmb(int is) const { return theCablesDmb[is]; }
0143   float getCoolingDmb(int is) const { return theCoolingDmb[is]; }
0144   float getElectronicsDmb(int is) const { return theElectronicsDmb[is]; }
0145   float getOtherDmb(int is) const { return theOtherDmb[is]; }
0146   float getAirDmb(int is) const { return theAirDmb[is]; }
0147   float getCopperDmb(int is) const { return theCopperDmb[is]; }
0148   float getH_ScintillatorDmb(int is) const { return theH_ScintillatorDmb[is]; }
0149   float getLeadDmb(int is) const { return theLeadDmb[is]; }
0150   float getEpoxyDmb(int is) const { return theEpoxyDmb[is]; }
0151   float getKaptonDmb(int is) const { return theKaptonDmb[is]; }
0152   float getAluminiumDmb(int is) const { return theAluminiumDmb[is]; }
0153   float getHGC_G10_FR4Dmb(int is) const { return theHGC_G10_FR4Dmb[is]; }
0154   float getSiliconDmb(int is) const { return theSiliconDmb[is]; }
0155   float getStainlessSteelDmb(int is) const { return theStainlessSteelDmb[is]; }
0156   float getWCuDmb(int is) const { return theWCuDmb[is]; }
0157   float getPolystyreneDmb(int is) const { return thePolystyreneDmb[is]; }
0158   float getHGC_EEConnectorDmb(int is) const { return theHGC_EEConnectorDmb[is]; }
0159   float getHGC_HEConnectorDmb(int is) const { return theHGC_HEConnectorDmb[is]; }
0160 
0161   float getStepDil(int is) { return theDil[is]; }
0162   float getSupportDil(int is) const { return theSupportDil[is]; }
0163   float getSensitiveDil(int is) const { return theSensitiveDil[is]; }
0164   float getCablesDil(int is) const { return theCablesDil[is]; }
0165   float getCoolingDil(int is) const { return theCoolingDil[is]; }
0166   float getElectronicsDil(int is) const { return theElectronicsDil[is]; }
0167   float getOtherDil(int is) const { return theOtherDil[is]; }
0168   float getAirDil(int is) const { return theAirDil[is]; }
0169   float getCopperDil(int is) const { return theCopperDil[is]; }
0170   float getH_ScintillatorDil(int is) const { return theH_ScintillatorDil[is]; }
0171   float getLeadDil(int is) const { return theLeadDil[is]; }
0172   float getEpoxyDil(int is) const { return theEpoxyDil[is]; }
0173   float getKaptonDil(int is) const { return theKaptonDil[is]; }
0174   float getAluminiumDil(int is) const { return theAluminiumDil[is]; }
0175   float getHGC_G10_FR4Dil(int is) const { return theHGC_G10_FR4Dil[is]; }
0176   float getSiliconDil(int is) const { return theSiliconDil[is]; }
0177   float getStainlessSteelDil(int is) const { return theStainlessSteelDil[is]; }
0178   float getWCuDil(int is) const { return theWCuDil[is]; }
0179   float getPolystyreneDil(int is) const { return thePolystyreneDil[is]; }
0180   float getHGC_EEConnectorDil(int is) const { return theHGC_EEConnectorDil[is]; }
0181   float getHGC_HEConnectorDil(int is) const { return theHGC_HEConnectorDil[is]; }
0182 
0183   double getStepInitialX(int is) { return theInitialX[is]; }
0184   double getStepInitialY(int is) { return theInitialY[is]; }
0185   double getStepInitialZ(int is) { return theInitialZ[is]; }
0186   double getStepFinalX(int is) { return theFinalX[is]; }
0187   double getStepFinalY(int is) { return theFinalY[is]; }
0188   double getStepFinalZ(int is) { return theFinalZ[is]; }
0189   int getStepID(int is) { return theStepID[is]; }
0190   float getStepInitialPt(int is) { return theStepInitialPt[is]; }
0191   float getStepInitialEta(int is) { return theStepInitialEta[is]; }
0192   float getStepInitialPhi(int is) { return theStepInitialPhi[is]; }
0193   float getStepInitialEnergy(int is) { return theStepInitialEnergy[is]; }
0194   float getStepInitialPx(int is) { return theStepInitialPx[is]; }
0195   float getStepInitialPy(int is) { return theStepInitialPy[is]; }
0196   float getStepInitialPz(int is) { return theStepInitialPz[is]; }
0197   float getStepInitialBeta(int is) { return theStepInitialBeta[is]; }
0198   float getStepInitialGamma(int is) { return theStepInitialGamma[is]; }
0199   float getStepInitialMass(int is) { return theStepInitialMass[is]; }
0200   float getStepFinalPt(int is) { return theStepFinalPt[is]; }
0201   float getStepFinalEta(int is) { return theStepFinalEta[is]; }
0202   float getStepFinalPhi(int is) { return theStepFinalPhi[is]; }
0203   float getStepFinalEnergy(int is) { return theStepFinalEnergy[is]; }
0204   float getStepFinalPx(int is) { return theStepFinalPx[is]; }
0205   float getStepFinalPy(int is) { return theStepFinalPy[is]; }
0206   float getStepFinalPz(int is) { return theStepFinalPz[is]; }
0207   float getStepFinalBeta(int is) { return theStepFinalBeta[is]; }
0208   float getStepFinalGamma(int is) { return theStepFinalGamma[is]; }
0209   float getStepFinalMass(int is) { return theStepFinalMass[is]; }
0210   int getStepPreProcess(int is) { return theStepPreProcess[is]; }
0211   int getStepPostProcess(int is) { return theStepPostProcess[is]; }
0212 
0213   int getStepVolumeID(int is) { return theVolumeID[is]; }
0214   std::string getStepVolumeName(int is) { return theVolumeName[is]; }
0215   int getStepVolumeCopy(int is) { return theVolumeCopy[is]; }
0216   float getStepVolumeX(int is) { return theVolumeX[is]; }
0217   float getStepVolumeY(int is) { return theVolumeY[is]; }
0218   float getStepVolumeZ(int is) { return theVolumeZ[is]; }
0219   CLHEP::HepLorentzVector getStepVolumeXaxis(int is) {
0220     return CLHEP::HepLorentzVector(theVolumeXaxis1[is], theVolumeXaxis2[is], theVolumeXaxis3[is]);
0221   }
0222   CLHEP::HepLorentzVector getStepVolumeYaxis(int is) {
0223     return CLHEP::HepLorentzVector(theVolumeYaxis1[is], theVolumeYaxis2[is], theVolumeYaxis3[is]);
0224   }
0225   CLHEP::HepLorentzVector getStepVolumeZaxis(int is) {
0226     return CLHEP::HepLorentzVector(theVolumeZaxis1[is], theVolumeZaxis2[is], theVolumeZaxis3[is]);
0227   }
0228   int getStepMaterialID(int is) { return theMaterialID[is]; }
0229   std::string getStepMaterialName(int is) { return theMaterialName[is]; }
0230   float getStepMaterialX0(int is) { return theMaterialX0[is]; }
0231   float getStepMaterialLambda0(int is) { return theMaterialLambda0[is]; }
0232   float getStepMaterialDensity(int is) { return theMaterialDensity[is]; }
0233 
0234   bool allStepsON() { return allStepsToTree; }
0235 
0236   inline bool getHGCalmode(void) { return isHGCal; }
0237   inline void setHGCalmode(bool t) { isHGCal = t; }
0238   inline void setMtdmode(bool t) { isMtd = t; }
0239 
0240 private:
0241   static constexpr int MAXNUMBERSTEPS = 10000;
0242 
0243   float theTotalMB;
0244   float theEta;
0245   float thePhi;
0246 
0247   float thePt;
0248   int theID;
0249   float theEnergy;
0250   float theMass;
0251   float theSupportFractionMB;
0252   float theSensitiveFractionMB;
0253   float theCablesFractionMB;
0254   float theCoolingFractionMB;
0255   float theElectronicsFractionMB;
0256   float theOtherFractionMB;
0257   float theAirFractionMB;
0258   float theSupportFractionIL;
0259   float theSensitiveFractionIL;
0260   float theCablesFractionIL;
0261   float theCoolingFractionIL;
0262   float theElectronicsFractionIL;
0263   float theOtherFractionIL;
0264   float theAirFractionIL;
0265   float theSupportMB;
0266   float theSensitiveMB;
0267   float theCablesMB;
0268   float theCoolingMB;
0269   float theElectronicsMB;
0270   float theOtherMB;
0271   float theAirMB;
0272 
0273   //HGCal MB
0274   float theCopperFractionMB;
0275   float theH_ScintillatorFractionMB;
0276   float theLeadFractionMB;
0277   float theEpoxyFractionMB;
0278   float theKaptonFractionMB;
0279   float theAluminiumFractionMB;
0280   float theHGC_G10_FR4FractionMB;
0281   float theSiliconFractionMB;
0282   float theStainlessSteelFractionMB;
0283   float theWCuFractionMB;
0284   float thePolystyreneFractionMB;
0285   float theHGC_EEConnectorFractionMB;
0286   float theHGC_HEConnectorFractionMB;
0287   float theCopperMB;
0288   float theH_ScintillatorMB;
0289   float theLeadMB;
0290   float theEpoxyMB;
0291   float theKaptonMB;
0292   float theAluminiumMB;
0293   float theHGC_G10_FR4MB;
0294   float theSiliconMB;
0295   float theStainlessSteelMB;
0296   float theWCuMB;
0297   float thePolystyreneMB;
0298   float theHGC_EEConnectorMB;
0299   float theHGC_HEConnectorMB;
0300   float theTotalIL;
0301   float theSupportIL;
0302   float theSensitiveIL;
0303   float theCablesIL;
0304   float theCoolingIL;
0305   float theElectronicsIL;
0306   float theOtherIL;
0307   float theAirIL;
0308 
0309   //HGCal IL
0310   float theCopperFractionIL;
0311   float theH_ScintillatorFractionIL;
0312   float theLeadFractionIL;
0313   float theEpoxyFractionIL;
0314   float theKaptonFractionIL;
0315   float theAluminiumFractionIL;
0316   float theHGC_G10_FR4FractionIL;
0317   float theSiliconFractionIL;
0318   float theStainlessSteelFractionIL;
0319   float theWCuFractionIL;
0320   float thePolystyreneFractionIL;
0321   float theHGC_EEConnectorFractionIL;
0322   float theHGC_HEConnectorFractionIL;
0323   float theCopperIL;
0324   float theH_ScintillatorIL;
0325   float theLeadIL;
0326   float theEpoxyIL;
0327   float theKaptonIL;
0328   float theAluminiumIL;
0329   float theHGC_G10_FR4IL;
0330   float theSiliconIL;
0331   float theStainlessSteelIL;
0332   float theWCuIL;
0333   float thePolystyreneIL;
0334   float theHGC_EEConnectorIL;
0335   float theHGC_HEConnectorIL;
0336 
0337   int theStepN;
0338   std::array<double, MAXNUMBERSTEPS> theInitialX;
0339   std::array<double, MAXNUMBERSTEPS> theInitialY;
0340   std::array<double, MAXNUMBERSTEPS> theInitialZ;
0341 
0342   std::array<double, MAXNUMBERSTEPS> theFinalX;
0343   std::array<double, MAXNUMBERSTEPS> theFinalY;
0344   std::array<double, MAXNUMBERSTEPS> theFinalZ;
0345 
0346   std::array<float, MAXNUMBERSTEPS> theDmb;
0347   std::array<float, MAXNUMBERSTEPS> theSupportDmb;
0348   std::array<float, MAXNUMBERSTEPS> theSensitiveDmb;
0349   std::array<float, MAXNUMBERSTEPS> theCablesDmb;
0350   std::array<float, MAXNUMBERSTEPS> theCoolingDmb;
0351   std::array<float, MAXNUMBERSTEPS> theElectronicsDmb;
0352   std::array<float, MAXNUMBERSTEPS> theOtherDmb;
0353   std::array<float, MAXNUMBERSTEPS> theAirDmb;
0354   std::array<float, MAXNUMBERSTEPS> theCopperDmb;
0355   std::array<float, MAXNUMBERSTEPS> theH_ScintillatorDmb;
0356   std::array<float, MAXNUMBERSTEPS> theLeadDmb;
0357   std::array<float, MAXNUMBERSTEPS> theEpoxyDmb;
0358   std::array<float, MAXNUMBERSTEPS> theKaptonDmb;
0359   std::array<float, MAXNUMBERSTEPS> theAluminiumDmb;
0360   std::array<float, MAXNUMBERSTEPS> theHGC_G10_FR4Dmb;
0361   std::array<float, MAXNUMBERSTEPS> theSiliconDmb;
0362   std::array<float, MAXNUMBERSTEPS> theStainlessSteelDmb;
0363   std::array<float, MAXNUMBERSTEPS> theWCuDmb;
0364   std::array<float, MAXNUMBERSTEPS> thePolystyreneDmb;
0365   std::array<float, MAXNUMBERSTEPS> theHGC_EEConnectorDmb;
0366   std::array<float, MAXNUMBERSTEPS> theHGC_HEConnectorDmb;
0367 
0368   std::array<float, MAXNUMBERSTEPS> theDil;
0369   std::array<float, MAXNUMBERSTEPS> theSupportDil;
0370   std::array<float, MAXNUMBERSTEPS> theSensitiveDil;
0371   std::array<float, MAXNUMBERSTEPS> theCablesDil;
0372   std::array<float, MAXNUMBERSTEPS> theCoolingDil;
0373   std::array<float, MAXNUMBERSTEPS> theElectronicsDil;
0374   std::array<float, MAXNUMBERSTEPS> theOtherDil;
0375   std::array<float, MAXNUMBERSTEPS> theAirDil;
0376   std::array<float, MAXNUMBERSTEPS> theCopperDil;
0377   std::array<float, MAXNUMBERSTEPS> theH_ScintillatorDil;
0378   std::array<float, MAXNUMBERSTEPS> theLeadDil;
0379   std::array<float, MAXNUMBERSTEPS> theEpoxyDil;
0380   std::array<float, MAXNUMBERSTEPS> theKaptonDil;
0381   std::array<float, MAXNUMBERSTEPS> theAluminiumDil;
0382   std::array<float, MAXNUMBERSTEPS> theHGC_G10_FR4Dil;
0383   std::array<float, MAXNUMBERSTEPS> theSiliconDil;
0384   std::array<float, MAXNUMBERSTEPS> theStainlessSteelDil;
0385   std::array<float, MAXNUMBERSTEPS> theWCuDil;
0386   std::array<float, MAXNUMBERSTEPS> thePolystyreneDil;
0387   std::array<float, MAXNUMBERSTEPS> theHGC_EEConnectorDil;
0388   std::array<float, MAXNUMBERSTEPS> theHGC_HEConnectorDil;
0389 
0390   std::array<int, MAXNUMBERSTEPS> theVolumeID;
0391   std::array<std::string, MAXNUMBERSTEPS> theVolumeName;
0392   std::array<int, MAXNUMBERSTEPS> theVolumeCopy;
0393   std::array<float, MAXNUMBERSTEPS> theVolumeX;
0394   std::array<float, MAXNUMBERSTEPS> theVolumeY;
0395   std::array<float, MAXNUMBERSTEPS> theVolumeZ;
0396   std::array<float, MAXNUMBERSTEPS> theVolumeXaxis1;
0397   std::array<float, MAXNUMBERSTEPS> theVolumeXaxis2;
0398   std::array<float, MAXNUMBERSTEPS> theVolumeXaxis3;
0399   std::array<float, MAXNUMBERSTEPS> theVolumeYaxis1;
0400   std::array<float, MAXNUMBERSTEPS> theVolumeYaxis2;
0401   std::array<float, MAXNUMBERSTEPS> theVolumeYaxis3;
0402   std::array<float, MAXNUMBERSTEPS> theVolumeZaxis1;
0403   std::array<float, MAXNUMBERSTEPS> theVolumeZaxis2;
0404   std::array<float, MAXNUMBERSTEPS> theVolumeZaxis3;
0405 
0406   std::array<int, MAXNUMBERSTEPS> theMaterialID;
0407   std::array<std::string, MAXNUMBERSTEPS> theMaterialName;
0408   std::array<float, MAXNUMBERSTEPS> theMaterialX0;
0409   std::array<float, MAXNUMBERSTEPS> theMaterialLambda0;
0410   std::array<float, MAXNUMBERSTEPS> theMaterialDensity;
0411 
0412   std::array<int, MAXNUMBERSTEPS> theStepID;
0413   std::array<float, MAXNUMBERSTEPS> theStepInitialPt;
0414   std::array<float, MAXNUMBERSTEPS> theStepInitialEta;
0415   std::array<float, MAXNUMBERSTEPS> theStepInitialPhi;
0416   std::array<float, MAXNUMBERSTEPS> theStepInitialEnergy;
0417   std::array<float, MAXNUMBERSTEPS> theStepInitialPx;
0418   std::array<float, MAXNUMBERSTEPS> theStepInitialPy;
0419   std::array<float, MAXNUMBERSTEPS> theStepInitialPz;
0420   std::array<float, MAXNUMBERSTEPS> theStepInitialBeta;
0421   std::array<float, MAXNUMBERSTEPS> theStepInitialGamma;
0422   std::array<float, MAXNUMBERSTEPS> theStepInitialMass;
0423   std::array<float, MAXNUMBERSTEPS> theStepFinalPt;
0424   std::array<float, MAXNUMBERSTEPS> theStepFinalEta;
0425   std::array<float, MAXNUMBERSTEPS> theStepFinalPhi;
0426   std::array<float, MAXNUMBERSTEPS> theStepFinalEnergy;
0427   std::array<float, MAXNUMBERSTEPS> theStepFinalPx;
0428   std::array<float, MAXNUMBERSTEPS> theStepFinalPy;
0429   std::array<float, MAXNUMBERSTEPS> theStepFinalPz;
0430   std::array<float, MAXNUMBERSTEPS> theStepFinalBeta;
0431   std::array<float, MAXNUMBERSTEPS> theStepFinalGamma;
0432   std::array<float, MAXNUMBERSTEPS> theStepFinalMass;
0433   std::array<int, MAXNUMBERSTEPS> theStepPreProcess;
0434   std::array<int, MAXNUMBERSTEPS> theStepPostProcess;
0435 
0436   float theTrkLen;
0437 
0438   std::string thePVname;
0439 
0440   int thePVcopyNo;
0441 
0442   std::unique_ptr<MaterialBudgetCategorizer> myMaterialBudgetCategorizer;
0443 
0444   float theRadLen;
0445   float theIntLen;
0446   int stepN;
0447   bool allStepsToTree;
0448   bool isHGCal;  //HGCal mode
0449   bool isMtd;    //Mtd mode
0450 
0451   double densityConvertionFactor;
0452 };
0453 
0454 #endif