CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/SimDataFormats/ValidationFormats/interface/PValidationFormats.h

Go to the documentation of this file.
00001 #ifndef PValidationFormats_h
00002 #define PValidationFormats_h
00003 
00005 // PGlobalSimHit
00007 #ifndef PGlobalSimHit_h
00008 #define PGlobalSimHit_h
00009 
00019 #include <vector>
00020 #include <memory>
00021 
00022 class PGlobalSimHit
00023 {
00024 
00025  public:
00026 
00027   PGlobalSimHit(): nRawGenPart(0), nG4Vtx(0), nG4Trk(0),  
00028     nECalHits(0), nPreShHits(0), nHCalHits(0), nPxlFwdHits(0),
00029     nPxlBrlHits(0), nSiFwdHits(0), nSiBrlHits(0),
00030     nMuonDtHits(0), nMuonCscHits(0), nMuonRpcFwdHits(0),
00031     nMuonRpcBrlHits(0) {}
00032   virtual ~PGlobalSimHit(){}
00033 
00034   struct Vtx
00035   {
00036     Vtx(): x(0), y(0), z(0) {}
00037     float x;
00038     float y;
00039     float z;
00040   };
00041 
00042   struct Trk
00043   {
00044     Trk() : pt(0), e(0) {}
00045     float pt;
00046     float e;
00047   };
00048 
00049   struct CalHit
00050   {
00051     CalHit() : e(0), tof(0), phi(0), eta(0) {}
00052     float e;
00053     float tof;
00054     float phi;
00055     float eta;
00056   };
00057 
00058   struct FwdHit
00059   {
00060     FwdHit() : tof(0), z(0), phi(0), eta(0) {}
00061     float tof;
00062     float z;
00063     float phi;
00064     float eta;
00065   };
00066 
00067   struct BrlHit
00068   {
00069     BrlHit() : tof(0), r(0), phi(0), eta(0) {}
00070     float tof;
00071     float r;
00072     float phi;
00073     float eta;
00074   };
00075 
00076   typedef std::vector<Vtx> VtxVector;
00077   typedef std::vector<Trk> TrkVector;
00078   typedef std::vector<CalHit> CalVector;
00079   typedef std::vector<FwdHit> FwdVector;
00080   typedef std::vector<BrlHit> BrlVector;
00081 
00082   // put functions
00083   void putRawGenPart(int n);
00084   void putG4Vtx(const std::vector<float>& x, const std::vector<float>& y, 
00085                  const std::vector<float>& z);
00086   void putG4Trk(const std::vector<float>& pt, const std::vector<float>& e);
00087   void putECalHits(const std::vector<float>& e, const std::vector<float>& tof,
00088                     const std::vector<float>& phi, const std::vector<float>& eta);
00089   void putPreShHits(const std::vector<float>& e, const std::vector<float>& tof,
00090                      const std::vector<float>& phi, const std::vector<float>& eta);
00091   void putHCalHits(const std::vector<float>& e, const std::vector<float>& tof,
00092                     const std::vector<float>& phi, const std::vector<float>& eta);
00093   void putPxlFwdHits(const std::vector<float>& tof, const std::vector<float>& z,
00094                        const std::vector<float>& phi, const std::vector<float>& eta);
00095   void putPxlBrlHits(const std::vector<float>& tof, const std::vector<float>& r,
00096                       const std::vector<float>& phi, const std::vector<float>& eta);
00097   void putSiFwdHits(const std::vector<float>& tof, const std::vector<float>& z,
00098                       const std::vector<float>& phi, const std::vector<float>& eta);
00099   void putSiBrlHits(const std::vector<float>& tof, const std::vector<float>& r,
00100                      const std::vector<float>& phi, const std::vector<float>& eta);
00101   void putMuonCscHits(const std::vector<float>& tof, const std::vector<float>& z,
00102                        const std::vector<float>& phi, const std::vector<float>& eta);
00103   void putMuonDtHits(const std::vector<float>& tof, const std::vector<float>& r,
00104                       const std::vector<float>& phi, const std::vector<float>& eta);
00105   void putMuonRpcFwdHits(const std::vector<float>& tof, const std::vector<float>& z,
00106                            const std::vector<float>& phi, const std::vector<float>& eta);
00107   void putMuonRpcBrlHits(const std::vector<float>& tof, const std::vector<float>& r,
00108                           const std::vector<float>& phi, const std::vector<float>& eta);  
00109 
00110   int getnRawGenPart() const {return nRawGenPart;}
00111   int getnG4Vtx() const {return nG4Vtx;}
00112   VtxVector getG4Vtx() const {return G4Vtx;}
00113   int getnG4Trk() const {return nG4Trk;}
00114   TrkVector getG4Trk() const {return G4Trk;}
00115   int getnECalHits() const {return nECalHits;}
00116   CalVector getECalHits() const {return ECalHits;}
00117   int getnPreShHits() const {return nPreShHits;}
00118   CalVector getPreShHits() const {return PreShHits;}
00119   int getnHCalHits() const {return nHCalHits;}
00120   CalVector getHCalHits() const {return HCalHits;}
00121   int getnPxlFwdHits() const {return nPxlFwdHits;}
00122   FwdVector getPxlFwdHits() const {return PxlFwdHits;}
00123   int getnPxlBrlHits() const {return nPxlBrlHits;}
00124   BrlVector getPxlBrlHits() const {return PxlBrlHits;}
00125   int getnSiFwdHits() const {return nSiFwdHits;}
00126   FwdVector getSiFwdHits() const {return SiFwdHits;}
00127   int getnSiBrlHits() const {return nSiBrlHits;}
00128   BrlVector getSiBrlHits() const {return SiBrlHits;}  
00129   int getnMuonDtHits() const {return nMuonDtHits;}
00130   BrlVector getMuonDtHits() const {return MuonDtHits;}
00131   int getnMuonCscHits() const {return nMuonCscHits;}
00132   FwdVector getMuonCscHits() const {return MuonCscHits;}
00133   int getnMuonRpcFwdHits() const {return nMuonRpcFwdHits;}
00134   FwdVector getMuonRpcFwdHits() const {return MuonRpcFwdHits;}
00135   int getnMuonRpcBrlHits() const {return nMuonRpcBrlHits;}
00136   BrlVector getMuonRpcBrlHits() const {return MuonRpcBrlHits;}  
00137 
00138  private:
00139 
00140   // G4MC info
00141   int nRawGenPart;
00142   int nG4Vtx;
00143   VtxVector G4Vtx; 
00144   int nG4Trk; 
00145   TrkVector G4Trk; 
00146 
00147   // ECal info
00148   int nECalHits;
00149   CalVector ECalHits; 
00150   int nPreShHits;
00151   CalVector PreShHits; 
00152 
00153   // HCal info
00154   int nHCalHits;
00155   CalVector HCalHits;
00156 
00157   // Tracker info
00158   int nPxlFwdHits;
00159   FwdVector PxlFwdHits; 
00160   int nPxlBrlHits;
00161   BrlVector PxlBrlHits;
00162   int nSiFwdHits;
00163   FwdVector SiFwdHits; 
00164   int nSiBrlHits;
00165   BrlVector SiBrlHits;  
00166 
00167   // Muon info
00168   int nMuonDtHits;
00169   BrlVector MuonDtHits;
00170   int nMuonCscHits;
00171   FwdVector MuonCscHits;
00172   int nMuonRpcFwdHits;
00173   FwdVector MuonRpcFwdHits;  
00174   int nMuonRpcBrlHits;
00175   BrlVector MuonRpcBrlHits;
00176 
00177 }; // end class declaration
00178 
00179 #endif // endif PGlobalHit_h
00180 
00182 // PGlobalDigi
00184 
00185 #ifndef PGlobalDigi_h
00186 #define PGlobalDigi_h
00187 
00188 class PGlobalDigi
00189 {
00190  public:
00191 
00192   PGlobalDigi(): nEBCalDigis(0), nEECalDigis(0), nESCalDigis(0),
00193     nHBCalDigis(0), nHECalDigis(0), nHOCalDigis(0), nHFCalDigis(0),
00194     nTIBL1Digis(0), nTIBL2Digis(0), nTIBL3Digis(0), nTIBL4Digis(0),
00195     nTOBL1Digis(0), nTOBL2Digis(0), nTOBL3Digis(0), nTOBL4Digis(0),
00196     nTIDW1Digis(0), nTIDW2Digis(0), nTIDW3Digis(0),
00197     nTECW1Digis(0), nTECW2Digis(0), nTECW3Digis(0), nTECW4Digis(0), 
00198     nTECW5Digis(0), nTECW6Digis(0), nTECW7Digis(0), nTECW8Digis(0),
00199     nBRL1Digis(0), nBRL2Digis(0), nBRL3Digis(0), 
00200     nFWD1pDigis(0), nFWD1nDigis(0), nFWD2pDigis(0), nFWD2nDigis(0),
00201     nMB1Digis(0), nMB2Digis(0), nMB3Digis(0), nMB4Digis(0),
00202     nCSCstripDigis(0), nCSCwireDigis(0) {}
00203   virtual ~PGlobalDigi(){}
00204 
00206   // ECal Info
00208   struct ECalDigi
00209   {
00210     ECalDigi(): maxPos(0), AEE(0), SHE(0) {}
00211     int maxPos;
00212     double AEE; //maximum analog equivalent energy
00213     float SHE; //simhit energy sum
00214   };
00215   typedef std::vector<ECalDigi> ECalDigiVector;
00216   struct ESCalDigi
00217   {
00218     ESCalDigi(): ADC0(0), ADC1(0), ADC2(0), SHE(0) {}
00219     float ADC0, ADC1, ADC2; //ADC counts
00220     float SHE; //sum simhit energy    
00221   };
00222   typedef std::vector<ESCalDigi> ESCalDigiVector;
00223   //put functions
00224   void putEBCalDigis(const std::vector<int>& maxpos,
00225                      const std::vector<double>& aee, const std::vector<float>& she);
00226   void putEECalDigis(const std::vector<int>& maxpos,
00227                      const std::vector<double>& aee, const std::vector<float>& she);
00228   void putESCalDigis(const std::vector<float>& adc0, const std::vector<float>& adc1,
00229                      const std::vector<float>& adc2, const std::vector<float>& she);
00230   //get functions
00231   int getnEBCalDigis() const {return nEBCalDigis;}  
00232   int getnEECalDigis() const {return nEECalDigis;}
00233   int getnESCalDigis() const {return nESCalDigis;}  
00234   ECalDigiVector getEBCalDigis() const {return EBCalDigis;}  
00235   ECalDigiVector getEECalDigis() const {return EECalDigis;}
00236   ESCalDigiVector getESCalDigis() const {return ESCalDigis;}  
00237 
00239   // HCal Info
00241   struct HCalDigi
00242   {
00243     HCalDigi(): AEE(0), SHE(0) {}
00244     float AEE; //sum analog equivalent energy in fC
00245     float SHE; //simhit energy sum
00246   };
00247   typedef std::vector<HCalDigi> HCalDigiVector;
00248   //put functions
00249   void putHBCalDigis(const std::vector<float>& aee, const std::vector<float>& she);
00250   void putHECalDigis(const std::vector<float>& aee, const std::vector<float>& she);
00251   void putHOCalDigis(const std::vector<float>& aee, const std::vector<float>& she);
00252   void putHFCalDigis(const std::vector<float>& aee, const std::vector<float>& she);
00253   //get functions
00254   int getnHBCalDigis() const {return nHBCalDigis;}  
00255   int getnHECalDigis() const {return nHECalDigis;}  
00256   int getnHOCalDigis() const {return nHOCalDigis;}  
00257   int getnHFCalDigis() const {return nHFCalDigis;}  
00258   HCalDigiVector getHBCalDigis() const {return HBCalDigis;}  
00259   HCalDigiVector getHECalDigis() const {return HECalDigis;}  
00260   HCalDigiVector getHOCalDigis() const {return HOCalDigis;}  
00261   HCalDigiVector getHFCalDigis() const {return HFCalDigis;}  
00262 
00264   // Silicon Tracker info
00266 
00268   // SiStrip info
00270   struct SiStripDigi
00271   {
00272     SiStripDigi(): ADC(0), STRIP(0) {}
00273     float ADC; //adc value
00274     int STRIP; //strip number
00275   };
00276   typedef std::vector<SiStripDigi> SiStripDigiVector;
00277   //put functions
00278   void putTIBL1Digis(const std::vector<float>& adc, const std::vector<int>& strip);
00279   void putTIBL2Digis(const std::vector<float>& adc, const std::vector<int>& strip);
00280   void putTIBL3Digis(const std::vector<float>& adc, const std::vector<int>& strip);
00281   void putTIBL4Digis(const std::vector<float>& adc, const std::vector<int>& strip);
00282   void putTOBL1Digis(const std::vector<float>& adc, const std::vector<int>& strip);
00283   void putTOBL2Digis(const std::vector<float>& adc, const std::vector<int>& strip);
00284   void putTOBL3Digis(const std::vector<float>& adc, const std::vector<int>& strip);
00285   void putTOBL4Digis(const std::vector<float>& adc, const std::vector<int>& strip);
00286   void putTIDW1Digis(const std::vector<float>& adc, const std::vector<int>& strip);
00287   void putTIDW2Digis(const std::vector<float>& adc, const std::vector<int>& strip);
00288   void putTIDW3Digis(const std::vector<float>& adc, const std::vector<int>& strip);
00289   void putTECW1Digis(const std::vector<float>& adc, const std::vector<int>& strip);
00290   void putTECW2Digis(const std::vector<float>& adc, const std::vector<int>& strip);
00291   void putTECW3Digis(const std::vector<float>& adc, const std::vector<int>& strip);
00292   void putTECW4Digis(const std::vector<float>& adc, const std::vector<int>& strip);
00293   void putTECW5Digis(const std::vector<float>& adc, const std::vector<int>& strip);
00294   void putTECW6Digis(const std::vector<float>& adc, const std::vector<int>& strip);
00295   void putTECW7Digis(const std::vector<float>& adc, const std::vector<int>& strip);
00296   void putTECW8Digis(const std::vector<float>& adc, const std::vector<int>& strip);
00297   //get functions
00298   int getnTIBL1Digis() const {return nTIBL1Digis;}  
00299   int getnTIBL2Digis() const {return nTIBL2Digis;}  
00300   int getnTIBL3Digis() const {return nTIBL3Digis;}  
00301   int getnTIBL4Digis() const {return nTIBL4Digis;}  
00302   int getnTOBL1Digis() const {return nTOBL1Digis;}  
00303   int getnTOBL2Digis() const {return nTOBL2Digis;}  
00304   int getnTOBL3Digis() const {return nTOBL3Digis;}  
00305   int getnTOBL4Digis() const {return nTOBL4Digis;}
00306   int getnTIDW1Digis() const {return nTIDW1Digis;}
00307   int getnTIDW2Digis() const {return nTIDW2Digis;}
00308   int getnTIDW3Digis() const {return nTIDW3Digis;} 
00309   int getnTECW1Digis() const {return nTECW1Digis;}
00310   int getnTECW2Digis() const {return nTECW2Digis;}
00311   int getnTECW3Digis() const {return nTECW3Digis;}
00312   int getnTECW4Digis() const {return nTECW4Digis;}
00313   int getnTECW5Digis() const {return nTECW5Digis;}
00314   int getnTECW6Digis() const {return nTECW6Digis;}
00315   int getnTECW7Digis() const {return nTECW7Digis;}
00316   int getnTECW8Digis() const {return nTECW8Digis;} 
00317   SiStripDigiVector getTIBL1Digis() const {return TIBL1Digis;}  
00318   SiStripDigiVector getTIBL2Digis() const {return TIBL2Digis;}  
00319   SiStripDigiVector getTIBL3Digis() const {return TIBL3Digis;}  
00320   SiStripDigiVector getTIBL4Digis() const {return TIBL4Digis;}
00321   SiStripDigiVector getTOBL1Digis() const {return TOBL1Digis;}  
00322   SiStripDigiVector getTOBL2Digis() const {return TOBL2Digis;}  
00323   SiStripDigiVector getTOBL3Digis() const {return TOBL3Digis;}  
00324   SiStripDigiVector getTOBL4Digis() const {return TOBL4Digis;}   
00325   SiStripDigiVector getTIDW1Digis() const {return TIDW1Digis;}
00326   SiStripDigiVector getTIDW2Digis() const {return TIDW2Digis;}
00327   SiStripDigiVector getTIDW3Digis() const {return TIDW3Digis;} 
00328   SiStripDigiVector getTECW1Digis() const {return TECW1Digis;}
00329   SiStripDigiVector getTECW2Digis() const {return TECW2Digis;}
00330   SiStripDigiVector getTECW3Digis() const {return TECW3Digis;}
00331   SiStripDigiVector getTECW4Digis() const {return TECW4Digis;}
00332   SiStripDigiVector getTECW5Digis() const {return TECW5Digis;}
00333   SiStripDigiVector getTECW6Digis() const {return TECW6Digis;}
00334   SiStripDigiVector getTECW7Digis() const {return TECW7Digis;}
00335   SiStripDigiVector getTECW8Digis() const {return TECW8Digis;}
00336 
00338   // SiPixel info
00340   struct SiPixelDigi
00341   {
00342     SiPixelDigi(): ADC(0), ROW(0), COLUMN(0) {}
00343     float ADC; //adc value
00344     int ROW; //row number
00345     int COLUMN; //column number
00346   };
00347   typedef std::vector<SiPixelDigi> SiPixelDigiVector;
00348   //put functions
00349   void putBRL1Digis(const std::vector<float>& adc, const std::vector<int>& row,
00350                     const std::vector<int>& column);
00351   void putBRL2Digis(const std::vector<float>& adc, const std::vector<int>& row,
00352                     const std::vector<int>& column);
00353   void putBRL3Digis(const std::vector<float>& adc, const std::vector<int>& row,
00354                     const std::vector<int>& column);
00355   void putFWD1pDigis(const std::vector<float>& adc, const std::vector<int>& row,
00356                     const std::vector<int>& column);
00357   void putFWD1nDigis(const std::vector<float>& adc, const std::vector<int>& row,
00358                     const std::vector<int>& column);
00359   void putFWD2pDigis(const std::vector<float>& adc, const std::vector<int>& row,
00360                     const std::vector<int>& column);
00361   void putFWD2nDigis(const std::vector<float>& adc, const std::vector<int>& row,
00362                     const std::vector<int>& column);
00363   //get functions
00364   int getnBRL1Digis() const {return nBRL1Digis;}  
00365   int getnBRL2Digis() const {return nBRL2Digis;}  
00366   int getnBRL3Digis() const {return nBRL3Digis;}
00367   int getnFWD1pDigis() const {return nFWD1pDigis;}  
00368   int getnFWD1nDigis() const {return nFWD1nDigis;}    
00369   int getnFWD2pDigis() const {return nFWD2pDigis;}  
00370   int getnFWD2nDigis() const {return nFWD2nDigis;}  
00371   SiPixelDigiVector getBRL1Digis() const {return BRL1Digis;}  
00372   SiPixelDigiVector getBRL2Digis() const {return BRL2Digis;}  
00373   SiPixelDigiVector getBRL3Digis() const {return BRL3Digis;}  
00374   SiPixelDigiVector getFWD1pDigis() const {return FWD1pDigis;}
00375   SiPixelDigiVector getFWD1nDigis() const {return FWD1nDigis;} 
00376   SiPixelDigiVector getFWD2pDigis() const {return FWD2pDigis;}
00377   SiPixelDigiVector getFWD2nDigis() const {return FWD2nDigis;} 
00378 
00380   // Muon info
00382 
00384   // DT Info
00386   struct DTDigi
00387   {
00388     DTDigi(): SLAYER(0), TIME(0), LAYER(0) {}
00389     int SLAYER; //superlayer number
00390     float TIME; //time of hit
00391     int LAYER; //layer number
00392   };
00393   typedef std::vector<DTDigi> DTDigiVector;
00394   //put functions
00395   void putMB1Digis(const std::vector<int>& slayer, const std::vector<float>& time, 
00396                    const std::vector<int>& layer);
00397   void putMB2Digis(const std::vector<int>& slayer, const std::vector<float>& time, 
00398                    const std::vector<int>& layer);
00399   void putMB3Digis(const std::vector<int>& slayer, const std::vector<float>& time, 
00400                    const std::vector<int>& layer);
00401   void putMB4Digis(const std::vector<int>& slayer, const std::vector<float>& time, 
00402                    const std::vector<int>& layer);
00403   //get functions
00404   int getnMB1Digis() const {return nMB1Digis;}  
00405   int getnMB2Digis() const {return nMB2Digis;}  
00406   int getnMB3Digis() const {return nMB3Digis;}  
00407   int getnMB4Digis() const {return nMB4Digis;}  
00408   DTDigiVector getMB1Digis() const {return MB1Digis;}  
00409   DTDigiVector getMB2Digis() const {return MB2Digis;}  
00410   DTDigiVector getMB3Digis() const {return MB3Digis;}  
00411   DTDigiVector getMB4Digis() const {return MB4Digis;}  
00412 
00414   // CSC Strip info
00416   struct CSCstripDigi
00417   {
00418     CSCstripDigi(): ADC(0) {}
00419     float ADC; //ped subtracted amplitude
00420   };
00421   typedef std::vector<CSCstripDigi> CSCstripDigiVector;
00422   //put functions
00423   void putCSCstripDigis(const std::vector<float>& adc);
00424   //get functions
00425   int getnCSCstripDigis() const {return nCSCstripDigis;}  
00426   CSCstripDigiVector getCSCstripDigis() const {return CSCstripDigis;}  
00427 
00429   // CSC Wire info
00431   struct CSCwireDigi
00432   {
00433     CSCwireDigi(): TIME(0) {}
00434     float TIME; //time
00435   };
00436   typedef std::vector<CSCwireDigi> CSCwireDigiVector;
00437   //put functions
00438   void putCSCwireDigis(const std::vector<float>& time);
00439   //get functions
00440   int getnCSCwireDigis() const {return nCSCwireDigis;}  
00441   CSCwireDigiVector getCSCwireDigis() const {return CSCwireDigis;} 
00442 
00443  private:
00444 
00446   // ECal info
00448   int nEBCalDigis;
00449   ECalDigiVector EBCalDigis;
00450   int nEECalDigis;
00451   ECalDigiVector EECalDigis;
00452   int nESCalDigis;
00453   ESCalDigiVector ESCalDigis;
00454 
00456   // HCal info
00458   int nHBCalDigis;
00459   HCalDigiVector HBCalDigis;
00460   int nHECalDigis;
00461   HCalDigiVector HECalDigis;
00462   int nHOCalDigis;
00463   HCalDigiVector HOCalDigis;
00464   int nHFCalDigis;
00465   HCalDigiVector HFCalDigis;
00466 
00468   // Silicon Tracker info
00470 
00472   //SiStrip info
00474   int nTIBL1Digis;  
00475   SiStripDigiVector TIBL1Digis;
00476   int nTIBL2Digis;  
00477   SiStripDigiVector TIBL2Digis;
00478   int nTIBL3Digis; 
00479   SiStripDigiVector TIBL3Digis;
00480   int nTIBL4Digis;  
00481   SiStripDigiVector TIBL4Digis;
00482   int nTOBL1Digis;
00483   SiStripDigiVector TOBL1Digis;
00484   int nTOBL2Digis;  
00485   SiStripDigiVector TOBL2Digis;
00486   int nTOBL3Digis;  
00487   SiStripDigiVector TOBL3Digis;
00488   int nTOBL4Digis; 
00489   SiStripDigiVector TOBL4Digis;
00490   int nTIDW1Digis;   
00491   SiStripDigiVector TIDW1Digis;
00492   int nTIDW2Digis;
00493   SiStripDigiVector TIDW2Digis;
00494   int nTIDW3Digis;
00495   SiStripDigiVector TIDW3Digis; 
00496   int nTECW1Digis;
00497   SiStripDigiVector TECW1Digis;
00498   int nTECW2Digis;
00499   SiStripDigiVector TECW2Digis;
00500   int nTECW3Digis;
00501   SiStripDigiVector TECW3Digis;
00502   int nTECW4Digis;
00503   SiStripDigiVector TECW4Digis;
00504   int nTECW5Digis;
00505   SiStripDigiVector TECW5Digis;
00506   int nTECW6Digis;
00507   SiStripDigiVector TECW6Digis;
00508   int nTECW7Digis;
00509   SiStripDigiVector TECW7Digis;
00510   int nTECW8Digis;
00511   SiStripDigiVector TECW8Digis;
00512 
00514   //SiPixel info
00516   int nBRL1Digis;
00517   SiPixelDigiVector BRL1Digis;
00518   int nBRL2Digis;  
00519   SiPixelDigiVector BRL2Digis; 
00520   int nBRL3Digis; 
00521   SiPixelDigiVector BRL3Digis; 
00522   int nFWD1pDigis; 
00523   SiPixelDigiVector FWD1pDigis;
00524   int nFWD1nDigis;
00525   SiPixelDigiVector FWD1nDigis; 
00526   int nFWD2pDigis;
00527   SiPixelDigiVector FWD2pDigis;
00528   int nFWD2nDigis;
00529   SiPixelDigiVector FWD2nDigis; 
00530 
00532   // Muon info
00534 
00536   // DT Info
00538   int nMB1Digis;
00539   DTDigiVector MB1Digis; 
00540   int nMB2Digis;
00541   DTDigiVector MB2Digis; 
00542   int nMB3Digis;
00543   DTDigiVector MB3Digis; 
00544   int nMB4Digis; 
00545   DTDigiVector MB4Digis; 
00546 
00548   // CSC Strip info
00550   int nCSCstripDigis;
00551   CSCstripDigiVector CSCstripDigis;
00552 
00554   // CSC Wire info
00556   int nCSCwireDigis;
00557   CSCwireDigiVector CSCwireDigis;
00558  
00559 }; // end class declaration
00560 
00561 #endif //PGlobalDigiHit_h
00562 
00564 // PGlobalRecHit
00566 
00567 #ifndef PGlobalRecHit_h
00568 #define PGlobalRecHit_h
00569 
00570 class PGlobalRecHit
00571 {
00572  public:
00573 
00574   PGlobalRecHit(): nEBCalRecHits(0), nEECalRecHits(0), nESCalRecHits(0),
00575     nHBCalRecHits(0), nHECalRecHits(0), nHOCalRecHits(0), nHFCalRecHits(0),
00576     nTIBL1RecHits(0), nTIBL2RecHits(0), nTIBL3RecHits(0), nTIBL4RecHits(0),
00577     nTOBL1RecHits(0), nTOBL2RecHits(0), nTOBL3RecHits(0), nTOBL4RecHits(0),
00578     nTIDW1RecHits(0), nTIDW2RecHits(0), nTIDW3RecHits(0),
00579     nTECW1RecHits(0), nTECW2RecHits(0), nTECW3RecHits(0), nTECW4RecHits(0), 
00580     nTECW5RecHits(0), nTECW6RecHits(0), nTECW7RecHits(0), nTECW8RecHits(0),
00581     nBRL1RecHits(0), nBRL2RecHits(0), nBRL3RecHits(0), 
00582     nFWD1pRecHits(0), nFWD1nRecHits(0), nFWD2pRecHits(0), nFWD2nRecHits(0),
00583     nDTRecHits(0), nCSCRecHits(0), nRPCRecHits(0) {}
00584   virtual ~PGlobalRecHit(){}
00585 
00587   // ECal Info
00589   struct ECalRecHit
00590   {
00591     ECalRecHit(): RE(0), SHE(0) {}
00592     float RE; //reconstructed energy
00593     float SHE; //simhit energy
00594   };
00595   typedef std::vector<ECalRecHit> ECalRecHitVector;
00596   //put functions
00597   void putEBCalRecHits(const std::vector<float>& re, const std::vector<float>& she);
00598   void putEECalRecHits(const std::vector<float>& re, const std::vector<float>& she);
00599   void putESCalRecHits(const std::vector<float>& re, const std::vector<float>& she);
00600   //get functions
00601   int getnEBCalRecHits() const {return nEBCalRecHits;}  
00602   int getnEECalRecHits() const {return nEECalRecHits;}
00603   int getnESCalRecHits() const {return nESCalRecHits;}  
00604   ECalRecHitVector getEBCalRecHits() const {return EBCalRecHits;}  
00605   ECalRecHitVector getEECalRecHits() const {return EECalRecHits;}
00606   ECalRecHitVector getESCalRecHits() const {return ESCalRecHits;}  
00607 
00609   // HCal Info
00611   struct HCalRecHit
00612   {
00613     HCalRecHit(): REC(0), R(0), SHE(0) {}
00614     float REC; // reconstructed energy
00615     float R;   // distance in cone 
00616     float SHE; // simhit energy
00617   };
00618   typedef std::vector<HCalRecHit> HCalRecHitVector;
00619   //put functions
00620   void putHBCalRecHits(const std::vector<float>& rec, const std::vector<float>& r, 
00621                        const std::vector<float>& she);
00622   void putHECalRecHits(const std::vector<float>& rec, const std::vector<float>& r, 
00623                        const std::vector<float>& she);
00624   void putHOCalRecHits(const std::vector<float>& rec, const std::vector<float>& r, 
00625                        const std::vector<float>& she);
00626   void putHFCalRecHits(const std::vector<float>& rec, const std::vector<float>& r, 
00627                        const std::vector<float>& she);
00628   //get functions
00629   int getnHBCalRecHits() const {return nHBCalRecHits;}  
00630   int getnHECalRecHits() const {return nHECalRecHits;}  
00631   int getnHOCalRecHits() const {return nHOCalRecHits;}  
00632   int getnHFCalRecHits() const {return nHFCalRecHits;}  
00633   HCalRecHitVector getHBCalRecHits() const {return HBCalRecHits;}  
00634   HCalRecHitVector getHECalRecHits() const {return HECalRecHits;}  
00635   HCalRecHitVector getHOCalRecHits() const {return HOCalRecHits;}  
00636   HCalRecHitVector getHFCalRecHits() const {return HFCalRecHits;}  
00637 
00639   // Silicon Tracker info
00641 
00643   // SiStrip info
00645   struct SiStripRecHit
00646   {
00647     SiStripRecHit(): RX(0), RY(0), SX(0), SY(0) {}
00648     float RX; //reconstructed x
00649     float RY; //reconstructed y
00650     float SX; //simulated x
00651     float SY; //simulated y
00652   };
00653   typedef std::vector<SiStripRecHit> SiStripRecHitVector;
00654   //put functions
00655   void putTIBL1RecHits(const std::vector<float>& rx, const std::vector<float>& ry,
00656                        const std::vector<float>& sx, const std::vector<float>& sy);
00657   void putTIBL2RecHits(const std::vector<float>& rx, const std::vector<float>& ry,
00658                        const std::vector<float>& sx, const std::vector<float>& sy);
00659   void putTIBL3RecHits(const std::vector<float>& rx, const std::vector<float>& ry,
00660                        const std::vector<float>& sx, const std::vector<float>& sy);
00661   void putTIBL4RecHits(const std::vector<float>& rx, const std::vector<float>& ry,
00662                        const std::vector<float>& sx, const std::vector<float>& sy);
00663   void putTOBL1RecHits(const std::vector<float>& rx, const std::vector<float>& ry,
00664                        const std::vector<float>& sx, const std::vector<float>& sy);
00665   void putTOBL2RecHits(const std::vector<float>& rx, const std::vector<float>& ry,
00666                        const std::vector<float>& sx, const std::vector<float>& sy);
00667   void putTOBL3RecHits(const std::vector<float>& rx, const std::vector<float>& ry,
00668                        const std::vector<float>& sx, const std::vector<float>& sy);
00669   void putTOBL4RecHits(const std::vector<float>& rx, const std::vector<float>& ry,
00670                        const std::vector<float>& sx, const std::vector<float>& sy);
00671   void putTIDW1RecHits(const std::vector<float>& rx, const std::vector<float>& ry,
00672                        const std::vector<float>& sx, const std::vector<float>& sy);
00673   void putTIDW2RecHits(const std::vector<float>& rx, const std::vector<float>& ry,
00674                        const std::vector<float>& sx, const std::vector<float>& sy);
00675   void putTIDW3RecHits(const std::vector<float>& rx, const std::vector<float>& ry,
00676                        const std::vector<float>& sx, const std::vector<float>& sy);
00677   void putTECW1RecHits(const std::vector<float>& rx, const std::vector<float>& ry,
00678                        const std::vector<float>& sx, const std::vector<float>& sy);
00679   void putTECW2RecHits(const std::vector<float>& rx, const std::vector<float>& ry,
00680                        const std::vector<float>& sx, const std::vector<float>& sy);
00681   void putTECW3RecHits(const std::vector<float>& rx, const std::vector<float>& ry,
00682                        const std::vector<float>& sx, const std::vector<float>& sy);
00683   void putTECW4RecHits(const std::vector<float>& rx, const std::vector<float>& ry,
00684                        const std::vector<float>& sx, const std::vector<float>& sy);
00685   void putTECW5RecHits(const std::vector<float>& rx, const std::vector<float>& ry,
00686                        const std::vector<float>& sx, const std::vector<float>& sy);
00687   void putTECW6RecHits(const std::vector<float>& rx, const std::vector<float>& ry,
00688                        const std::vector<float>& sx, const std::vector<float>& sy);
00689   void putTECW7RecHits(const std::vector<float>& rx, const std::vector<float>& ry,
00690                        const std::vector<float>& sx, const std::vector<float>& sy);
00691   void putTECW8RecHits(const std::vector<float>& rx, const std::vector<float>& ry,
00692                        const std::vector<float>& sx, const std::vector<float>& sy);
00693   //get functions
00694   int getnTIBL1RecHits() const {return nTIBL1RecHits;}  
00695   int getnTIBL2RecHits() const {return nTIBL2RecHits;}  
00696   int getnTIBL3RecHits() const {return nTIBL3RecHits;}  
00697   int getnTIBL4RecHits() const {return nTIBL4RecHits;}  
00698   int getnTOBL1RecHits() const {return nTOBL1RecHits;}  
00699   int getnTOBL2RecHits() const {return nTOBL2RecHits;}  
00700   int getnTOBL3RecHits() const {return nTOBL3RecHits;}  
00701   int getnTOBL4RecHits() const {return nTOBL4RecHits;}
00702   int getnTIDW1RecHits() const {return nTIDW1RecHits;}
00703   int getnTIDW2RecHits() const {return nTIDW2RecHits;}
00704   int getnTIDW3RecHits() const {return nTIDW3RecHits;} 
00705   int getnTECW1RecHits() const {return nTECW1RecHits;}
00706   int getnTECW2RecHits() const {return nTECW2RecHits;}
00707   int getnTECW3RecHits() const {return nTECW3RecHits;}
00708   int getnTECW4RecHits() const {return nTECW4RecHits;}
00709   int getnTECW5RecHits() const {return nTECW5RecHits;}
00710   int getnTECW6RecHits() const {return nTECW6RecHits;}
00711   int getnTECW7RecHits() const {return nTECW7RecHits;}
00712   int getnTECW8RecHits() const {return nTECW8RecHits;} 
00713   SiStripRecHitVector getTIBL1RecHits() const {return TIBL1RecHits;}  
00714   SiStripRecHitVector getTIBL2RecHits() const {return TIBL2RecHits;}  
00715   SiStripRecHitVector getTIBL3RecHits() const {return TIBL3RecHits;}  
00716   SiStripRecHitVector getTIBL4RecHits() const {return TIBL4RecHits;}
00717   SiStripRecHitVector getTOBL1RecHits() const {return TOBL1RecHits;}  
00718   SiStripRecHitVector getTOBL2RecHits() const {return TOBL2RecHits;}  
00719   SiStripRecHitVector getTOBL3RecHits() const {return TOBL3RecHits;}  
00720   SiStripRecHitVector getTOBL4RecHits() const {return TOBL4RecHits;}   
00721   SiStripRecHitVector getTIDW1RecHits() const {return TIDW1RecHits;}
00722   SiStripRecHitVector getTIDW2RecHits() const {return TIDW2RecHits;}
00723   SiStripRecHitVector getTIDW3RecHits() const {return TIDW3RecHits;} 
00724   SiStripRecHitVector getTECW1RecHits() const {return TECW1RecHits;}
00725   SiStripRecHitVector getTECW2RecHits() const {return TECW2RecHits;}
00726   SiStripRecHitVector getTECW3RecHits() const {return TECW3RecHits;}
00727   SiStripRecHitVector getTECW4RecHits() const {return TECW4RecHits;}
00728   SiStripRecHitVector getTECW5RecHits() const {return TECW5RecHits;}
00729   SiStripRecHitVector getTECW6RecHits() const {return TECW6RecHits;}
00730   SiStripRecHitVector getTECW7RecHits() const {return TECW7RecHits;}
00731   SiStripRecHitVector getTECW8RecHits() const {return TECW8RecHits;}
00732 
00734   // SiPixel info
00736   struct SiPixelRecHit
00737   {
00738     SiPixelRecHit(): RX(0), RY(0), SX(0), SY(0) {}
00739     float RX; //reconstructed x
00740     float RY; //reconstructed y
00741     float SX; //simulated x
00742     float SY; //simulated y
00743   };
00744   typedef std::vector<SiPixelRecHit> SiPixelRecHitVector;
00745   //put functions
00746   void putBRL1RecHits(const std::vector<float>& rx, const std::vector<float>& ry,
00747                        const std::vector<float>& sx, const std::vector<float>& sy);
00748   void putBRL2RecHits(const std::vector<float>& rx, const std::vector<float>& ry,
00749                        const std::vector<float>& sx, const std::vector<float>& sy);
00750   void putBRL3RecHits(const std::vector<float>& rx, const std::vector<float>& ry,
00751                        const std::vector<float>& sx, const std::vector<float>& sy);
00752   void putFWD1pRecHits(const std::vector<float>& rx, const std::vector<float>& ry,
00753                        const std::vector<float>& sx, const std::vector<float>& sy);
00754   void putFWD1nRecHits(const std::vector<float>& rx, const std::vector<float>& ry,
00755                        const std::vector<float>& sx, const std::vector<float>& sy);
00756   void putFWD2pRecHits(const std::vector<float>& rx, const std::vector<float>& ry,
00757                        const std::vector<float>& sx, const std::vector<float>& sy);
00758   void putFWD2nRecHits(const std::vector<float>& rx, const std::vector<float>& ry,
00759                        const std::vector<float>& sx, const std::vector<float>& sy);
00760   //get functions
00761   int getnBRL1RecHits() const {return nBRL1RecHits;}  
00762   int getnBRL2RecHits() const {return nBRL2RecHits;}  
00763   int getnBRL3RecHits() const {return nBRL3RecHits;}
00764   int getnFWD1pRecHits() const {return nFWD1pRecHits;}  
00765   int getnFWD1nRecHits() const {return nFWD1nRecHits;}    
00766   int getnFWD2pRecHits() const {return nFWD2pRecHits;}  
00767   int getnFWD2nRecHits() const {return nFWD2nRecHits;}  
00768   SiPixelRecHitVector getBRL1RecHits() const {return BRL1RecHits;}  
00769   SiPixelRecHitVector getBRL2RecHits() const {return BRL2RecHits;}  
00770   SiPixelRecHitVector getBRL3RecHits() const {return BRL3RecHits;}  
00771   SiPixelRecHitVector getFWD1pRecHits() const {return FWD1pRecHits;}
00772   SiPixelRecHitVector getFWD1nRecHits() const {return FWD1nRecHits;} 
00773   SiPixelRecHitVector getFWD2pRecHits() const {return FWD2pRecHits;}
00774   SiPixelRecHitVector getFWD2nRecHits() const {return FWD2nRecHits;} 
00775 
00777   // Muon info
00779 
00781   // DT Info
00783   struct DTRecHit
00784   {
00785     DTRecHit(): RHD(0), SHD(0) {}
00786     float RHD; //distance of rechit from wire
00787     float SHD; //distance of simhit from wire
00788   };
00789   typedef std::vector<DTRecHit> DTRecHitVector;
00790   //put functions
00791   void putDTRecHits(const std::vector<float>& rhd, const std::vector<float>& shd);
00792   //get functions
00793   int getnDTRecHits() const {return nDTRecHits;}  
00794   DTRecHitVector getDTRecHits() const {return DTRecHits;}  
00795 
00797   // CSC info
00799   struct CSCRecHit
00800   {
00801     CSCRecHit(): RHPHI(0), RHPERP(0), SHPHI(0) {}
00802     float RHPHI; //reconstructed hit phi
00803     float RHPERP; //reconstructed hit perp
00804     float SHPHI; //simulated hit phi
00805   };
00806   typedef std::vector<CSCRecHit> CSCRecHitVector;
00807   //put functions
00808   void putCSCRecHits(const std::vector<float>& rhphi, const std::vector<float>& rhperp, 
00809                      const std::vector<float>& shphi);
00810   //get functions
00811   int getnCSCRecHits() const {return nCSCRecHits;}  
00812   CSCRecHitVector getCSCRecHits() const {return CSCRecHits;}  
00813 
00815   // RPC info
00817   struct RPCRecHit
00818   {
00819     RPCRecHit(): RHX(0), SHX(0) {}
00820     float RHX; //reconstructed hit x
00821     float SHX; //simulated hit x
00822   };
00823   typedef std::vector<RPCRecHit> RPCRecHitVector;
00824   //put functions
00825   void putRPCRecHits(const std::vector<float>& rhx, const std::vector<float>& shx);
00826   //get functions
00827   int getnRPCRecHits() const {return nRPCRecHits;}  
00828   RPCRecHitVector getRPCRecHits() const {return RPCRecHits;} 
00829 
00830  private:
00831 
00833   // ECal info
00835   int nEBCalRecHits;
00836   ECalRecHitVector EBCalRecHits;
00837   int nEECalRecHits;
00838   ECalRecHitVector EECalRecHits;
00839   int nESCalRecHits;
00840   ECalRecHitVector ESCalRecHits;
00841 
00843   // HCal info
00845   int nHBCalRecHits;
00846   HCalRecHitVector HBCalRecHits;
00847   int nHECalRecHits;
00848   HCalRecHitVector HECalRecHits;
00849   int nHOCalRecHits;
00850   HCalRecHitVector HOCalRecHits;
00851   int nHFCalRecHits;
00852   HCalRecHitVector HFCalRecHits;
00853 
00855   // Silicon Tracker info
00857 
00859   //SiStrip info
00861   int nTIBL1RecHits;  
00862   SiStripRecHitVector TIBL1RecHits;
00863   int nTIBL2RecHits;  
00864   SiStripRecHitVector TIBL2RecHits;
00865   int nTIBL3RecHits; 
00866   SiStripRecHitVector TIBL3RecHits;
00867   int nTIBL4RecHits;  
00868   SiStripRecHitVector TIBL4RecHits;
00869   int nTOBL1RecHits;
00870   SiStripRecHitVector TOBL1RecHits;
00871   int nTOBL2RecHits;  
00872   SiStripRecHitVector TOBL2RecHits;
00873   int nTOBL3RecHits;  
00874   SiStripRecHitVector TOBL3RecHits;
00875   int nTOBL4RecHits; 
00876   SiStripRecHitVector TOBL4RecHits;
00877   int nTIDW1RecHits;   
00878   SiStripRecHitVector TIDW1RecHits;
00879   int nTIDW2RecHits;
00880   SiStripRecHitVector TIDW2RecHits;
00881   int nTIDW3RecHits;
00882   SiStripRecHitVector TIDW3RecHits; 
00883   int nTECW1RecHits;
00884   SiStripRecHitVector TECW1RecHits;
00885   int nTECW2RecHits;
00886   SiStripRecHitVector TECW2RecHits;
00887   int nTECW3RecHits;
00888   SiStripRecHitVector TECW3RecHits;
00889   int nTECW4RecHits;
00890   SiStripRecHitVector TECW4RecHits;
00891   int nTECW5RecHits;
00892   SiStripRecHitVector TECW5RecHits;
00893   int nTECW6RecHits;
00894   SiStripRecHitVector TECW6RecHits;
00895   int nTECW7RecHits;
00896   SiStripRecHitVector TECW7RecHits;
00897   int nTECW8RecHits;
00898   SiStripRecHitVector TECW8RecHits;
00899 
00901   //SiPixel info
00903   int nBRL1RecHits;
00904   SiPixelRecHitVector BRL1RecHits;
00905   int nBRL2RecHits;  
00906   SiPixelRecHitVector BRL2RecHits; 
00907   int nBRL3RecHits; 
00908   SiPixelRecHitVector BRL3RecHits; 
00909   int nFWD1pRecHits; 
00910   SiPixelRecHitVector FWD1pRecHits;
00911   int nFWD1nRecHits;
00912   SiPixelRecHitVector FWD1nRecHits; 
00913   int nFWD2pRecHits;
00914   SiPixelRecHitVector FWD2pRecHits;
00915   int nFWD2nRecHits;
00916   SiPixelRecHitVector FWD2nRecHits; 
00917 
00919   // Muon info
00921 
00923   // DT Info
00925   int nDTRecHits;
00926   DTRecHitVector DTRecHits; 
00927 
00929   // CSC info
00931   int nCSCRecHits;
00932   CSCRecHitVector CSCRecHits;
00933 
00935   // RPC info
00937   int nRPCRecHits;
00938   RPCRecHitVector RPCRecHits;
00939  
00940 }; // end class declaration
00941 
00942 #endif //PGlobalRecHitHit_h
00943 
00945 // PEcalValidInfo
00947 
00948 #ifndef  PEcalValidInfo_H
00949 #define  PEcalValidInfo_H
00950 
00951 /*----------------------------------------------------------
00952 Class Description:
00953       The Class, PEcalValidInfo, includes all the quantities 
00954     needed to validate for the Simulation of Eletromagnetic 
00955     Calorimetor. 
00956        The Objects of this class will be save into regular 
00957     Root file vis EDProducer.
00958 
00959 Author: X.HUANG ( huangxt@fnal.gov )
00960 Date:  Dec, 2005
00961 
00962 ---------------------------------------------------------*/
00963 
00964 #include <string>
00965 #include <vector>
00966 #include "DataFormats/Math/interface/LorentzVector.h"
00967 
00968 class EcalTestAnalysis; 
00969 
00970 class PEcalValidInfo 
00971 {
00972    friend  class   EcalTestAnalysis;
00973    friend  class   PreshowerTestAnalysis;
00974    friend  class   SimHitSingleTest;
00975    friend  class   EcalSimHitsValidProducer;
00976    typedef  std::vector<float>   FloatVector;
00977 
00978 public:
00979    PEcalValidInfo()
00980   :ee1(0.0),ee4(0.0),ee9(0.0),ee16(0.0),ee25(0.0),
00981    eb1(0.0),eb4(0.0),eb9(0.0),eb16(0.0),eb25(0.0),
00982    totalEInEE(0.0), totalEInEB(0.0), totalEInES(0.0),
00983    totalHits(0), nHitsInEE(0),nHitsInEB(0),nHitsInES(0),nHitsIn1ES(0),nHitsIn2ES(0) 
00984 {
00985 
00986  }
00987 
00988 
00989    ~PEcalValidInfo() {} 
00990 
00991    // Get functions.
00992    float  ee1x1() const { return ee1; }
00993    float  ee2x2() const { return ee4; }
00994    float  ee3x3() const { return ee9; }
00995    float  ee4x4() const { return ee16;}
00996    float  ee5x5() const { return ee25;}
00997 
00998    float  eb1x1() const { return eb1; }
00999    float  eb2x2() const { return eb4; }
01000    float  eb3x3() const { return eb9; }
01001    float  eb4x4() const { return eb16;}
01002    float  eb5x5() const { return eb25;}
01003 
01004    float  eInEE()  const { return totalEInEE; }
01005    float  eInEB()  const { return totalEInEB; }
01006    float  eInES()  const { return totalEInES; }
01007 
01008    float  eInEEzp()  const { return totalEInEEzp; }
01009    float  eInEEzm()  const { return totalEInEEzm; }
01010 
01011    float  eInESzp()  const { return totalEInESzp; }
01012    float  eInESzm()  const { return totalEInESzm; }
01013 
01014    int    hitsInEcal() const { return totalHits; }
01015    int    hitsInEE()   const { return nHitsInEE; }
01016    int    hitsInEB()   const { return nHitsInEB; }
01017    int    hitsInES()   const { return nHitsInES; }
01018    int    hitsIn1ES()  const { return nHitsIn1ES;}
01019    int    hitsIn2ES()  const { return nHitsIn2ES;}
01020   
01021    int    hitsIn1ESzp()  const { return nHitsIn1ESzp;}
01022    int    hitsIn1ESzm()  const { return nHitsIn1ESzm;}
01023    int    hitsIn2ESzp()  const { return nHitsIn2ESzp;}
01024    int    hitsIn2ESzm()  const { return nHitsIn2ESzm;}       
01025 
01026    int    crystalInEB()   const { return nCrystalInEB;}
01027    int    crystalInEEzp() const { return nCrystalInEEzp; }
01028    int    crystalInEEzm() const { return nCrystalInEEzm; }
01029 
01030    FloatVector  bX0() const { return eBX0; }
01031    FloatVector  eX0() const { return eEX0; }
01032 
01033 
01034    FloatVector  eIn1ES() const { return eOf1ES; }
01035    FloatVector  eIn2ES() const { return eOf2ES; }
01036    FloatVector  zOfInES()  const { return zOfES;  }
01037 
01038    FloatVector  eIn1ESzp() const { return eOf1ESzp; }
01039    FloatVector  eIn1ESzm() const { return eOf1ESzm; }
01040  
01041    FloatVector  eIn2ESzp() const { return eOf2ESzp; }
01042    FloatVector  eIn2ESzm() const { return eOf2ESzm; }
01043 
01044    FloatVector  phiOfEEHits() const { return phiOfEECaloG4Hit; }
01045    FloatVector  etaOfEEHits() const { return etaOfEECaloG4Hit; }
01046    FloatVector  tOfEEHits()   const { return tOfEECaloG4Hit;   }
01047    FloatVector  eOfEEHits()   const { return eOfEECaloG4Hit;   }
01048    FloatVector  eOfEEPlusHits()    const { return eOfEEPlusCaloG4Hit;   }
01049    FloatVector  eOfEEMinusHits()   const { return eOfEEMinusCaloG4Hit;   }
01050 
01051 
01052    FloatVector  phiOfEBHits() const { return phiOfEBCaloG4Hit; }
01053    FloatVector  etaOfEBHits() const { return etaOfEBCaloG4Hit; }
01054    FloatVector  tOfEBHits()   const { return tOfEBCaloG4Hit;   }
01055    FloatVector  eOfEBHits()   const { return eOfEBCaloG4Hit;   }
01056 
01057    FloatVector  phiOfiESHits() const { return phiOfESCaloG4Hit; }
01058    FloatVector  etaOfESHits() const { return etaOfESCaloG4Hit; }
01059    FloatVector  tOfESHits()   const { return tOfESCaloG4Hit;   }
01060    FloatVector  eOfESHits()   const { return eOfESCaloG4Hit;   }
01061 
01062    math::XYZTLorentzVector momentum() const { return theMomentum; }
01063    math::XYZTLorentzVector vertex() const  { return theVertex; }
01064    
01065    int pId()  const { return thePID; }   
01066 
01067 private:
01068  
01069    float  ee1;       //Energy deposition in cluser1x1
01070    float  ee4;       //Energy deposition in cluser2x2
01071    float  ee9;       //Energy deposition in cluser3x3
01072    float  ee16;      //Energy deposition in cluser4x4
01073    float  ee25;      //Energy deposition in cluser5x5
01074 
01075    float  eb1;       //Energy deposition in cluser1x1
01076    float  eb4;       //Energy deposition in cluser2x2
01077    float  eb9;       //Energy deposition in cluser3x3
01078    float  eb16;      //Energy deposition in cluser4x4
01079    float  eb25;      //Energy deposition in cluser5x5
01080 
01081 
01082  
01083    float  totalEInEE;       //The Total Energy deposited in EE;
01084    float  totalEInEB;       //The Total Energy deposited in EB;
01085    float  totalEInES;       //The Total Energy deposited in ES;
01086  
01087    float  totalEInEEzp;
01088    float  totalEInEEzm;
01089    float  totalEInESzp;
01090    float  totalEInESzm;
01091 
01092 
01093 
01094    int totalHits;          //Total number of Hits.
01095    int nHitsInEE;          //Total number of Hits in EE.
01096    int nHitsInEB;          //Total number of Hits in EB.
01097    int nHitsInES;          //Total number of Hits in ES.
01098    int nHitsIn1ES;         //Total number of Hits in 1st Layer of ES;
01099    int nHitsIn2ES;         //Total number of Hits in 2nd Layer of ES;
01100 
01101    int nHitsIn1ESzp;
01102    int nHitsIn1ESzm;
01103    int nHitsIn2ESzp;
01104    int nHitsIn2ESzm;       
01105 
01106    int nCrystalInEB;
01107    int nCrystalInEEzp;
01108    int nCrystalInEEzm;
01109 
01110 
01111    FloatVector eBX0;       // longitudinal Energy deposition In EB.
01112    FloatVector eEX0;       // longitudinal Energy deposition In EE.
01113 
01114    FloatVector  eOf1ES;    // Energy deposition of Hits in 1st layer of ES;
01115    FloatVector  eOf2ES;    // Energy deposition of Hits in 2nd layer of ES;              
01116    FloatVector  zOfES;
01117 
01118 
01119    FloatVector  eOf1ESzp;
01120    FloatVector  eOf1ESzm;
01121    FloatVector  eOf2ESzp;
01122    FloatVector  eOf2ESzm;
01123 
01124    FloatVector  phiOfEECaloG4Hit;    // Phi of Hits.
01125    FloatVector  etaOfEECaloG4Hit;    // Eta of Hits.
01126    FloatVector  tOfEECaloG4Hit;      // Tof of Hits.
01127    FloatVector  eOfEECaloG4Hit;      // Energy depostion of Hits.
01128    FloatVector  eOfEEPlusCaloG4Hit;       // Energy depostion of Hits.
01129    FloatVector  eOfEEMinusCaloG4Hit;      // Energy depostion of Hits.
01130 
01131    FloatVector  phiOfESCaloG4Hit;    // Phi of Hits.
01132    FloatVector  etaOfESCaloG4Hit;    // Eta of Hits.
01133    FloatVector  tOfESCaloG4Hit;      // Tof of Hits.
01134    FloatVector  eOfESCaloG4Hit;      // Energy depostion of Hits.
01135 
01136    FloatVector  phiOfEBCaloG4Hit;    // Phi of Hits.
01137    FloatVector  etaOfEBCaloG4Hit;    // Eta of Hits.
01138    FloatVector  tOfEBCaloG4Hit;      // Tof of Hits.
01139    FloatVector  eOfEBCaloG4Hit;      // Energy depostion of Hits.
01140 
01141 
01142 
01143    int thePID;                      // add more ??
01144    math::XYZTLorentzVector theMomentum;  
01145    math::XYZTLorentzVector theVertex;
01146 };
01147 
01148 
01149 #endif // endif PECal
01150 
01152 // PHcalValidInfoJets
01154 
01155 #ifndef  PHcalValidInfoJets_H
01156 #define  PHcalValidInfoJets_H
01157 
01158 #include <string>
01159 #include <vector>
01160 #include <memory>
01161 
01162 class SimG4HcalValidation;
01163 
01164 class PHcalValidInfoJets {
01165 
01166   friend class SimG4HcalValidation;
01167 
01168 public:
01169        
01170   PHcalValidInfoJets(): nJetHit(0), nJet(0), ecalJet(0.), hcalJet(0.),
01171                         hoJet(0.), etotJet(0.), detaJet(0.), dphiJet(0.),
01172                         drJet(0.), dijetM(0.) {}
01173   virtual ~PHcalValidInfoJets() {}
01174 
01175   // acceess
01176 
01177   std::vector<float> jethite() const {return jetHite;}
01178   std::vector<float> jethitr() const {return jetHitr;}
01179   std::vector<float> jethitt() const {return jetHitt;}
01180   int                njethit() const {return nJetHit;}
01181 
01182   std::vector<float> jete()    const {return jetE;}
01183   std::vector<float> jeteta()  const {return jetEta;}
01184   std::vector<float> jetphi()  const {return jetPhi;}
01185   int                njet()    const {return nJet;} 
01186 
01187   float              ecaljet() const {return ecalJet;}
01188   float              hcaljet() const {return hcalJet;}
01189   float                hojet() const {return   hoJet;}
01190   float              etotjet() const {return etotJet;}
01191 
01192   float              detajet() const {return detaJet;}
01193   float              dphijet() const {return dphiJet;}
01194   float                drjet() const {return   drJet;}
01195   float               dijetm() const {return  dijetM;}
01196 
01197   // fill
01198   void fillTProfileJet      (double e, double r, double t);
01199   void fillEcollectJet      (double ee, double he, double hoe, double etot);
01200   void fillEtaPhiProfileJet (double eta0, double phi0, double eta,
01201                              double phi, double dist);
01202   void fillJets             (const std::vector<double>& enj, const std::vector<double>& etaj,
01203                              const std::vector<double>& phij);
01204   void fillDiJets           (double mass);
01205 
01206 private:
01207 
01208   int                 nJetHit, nJet;
01209   float               ecalJet, hcalJet, hoJet, etotJet;
01210   float               detaJet, dphiJet, drJet, dijetM;
01211   std::vector<float>  jetHite;
01212   std::vector<float>  jetHitr;
01213   std::vector<float>  jetHitt;
01214   std::vector<float>  jetE;
01215   std::vector<float>  jetEta;
01216   std::vector<float>  jetPhi;
01217 
01218 };
01219 
01220 #endif
01221 
01223 // PHcalValidInfoLayer
01225 
01226 #ifndef  PHcalValidInfoLayer_H
01227 #define  PHcalValidInfoLayer_H
01228 
01229 #include <string>
01230 #include <vector>
01231 #include <memory>
01232 
01233 class SimG4HcalValidation;
01234 
01235 class PHcalValidInfoLayer {
01236 
01237   friend class SimG4HcalValidation;
01238 
01239 public:
01240        
01241   PHcalValidInfoLayer(): hitN(0), eHO(0.0),eHBHE(0.0),eEBEE(0.0),elongHF(0.0),
01242                          eshortHF(0.0), eEcalHF(0.0), eHcalHF(0.0) {}
01243   virtual ~PHcalValidInfoLayer() {}
01244 
01245   // access
01246   int                    nHit()   const {return hitN;}
01247 
01248   float                   eho()   const {return eHO;}    
01249   float                 ehbhe()   const {return eHBHE;}    
01250   float                 eebee()   const {return eEBEE;}    
01251   float               elonghf()   const {return elongHF;}    
01252   float              eshorthf()   const {return eshortHF;}    
01253   float               eecalhf()   const {return eEcalHF;}    
01254   float               ehcalhf()   const {return eHcalHF;}    
01255 
01256   std::vector<float>   elayer()   const {return eLayer;}
01257   std::vector<float>   edepth()   const {return eDepth;}
01258 
01259   std::vector<float>   etaHit()   const {return hitEta;} 
01260   std::vector<float>   phiHit()   const {return hitPhi;} 
01261   std::vector<float>     eHit()   const {return hitE;} 
01262   std::vector<float>     tHit()   const {return hitTime;} 
01263   std::vector<float> layerHit()   const {return hitLayer;} 
01264   std::vector<float>    idHit()   const {return hitId;} 
01265 
01266   // filling
01267   void fillLayers (double el[], double ed[], double ho, double hbhe,
01268                    double ebee);
01269   void fillHF     (double fibl, double fibs, double enec, double enhc);
01270   void fillHits   (int Nhits, int lay, int unitID, double eta, double phi, 
01271                    double ehit, double t); 
01272   //  void clear();
01273 
01274 
01275 private:
01276 
01277   int                hitN;
01278   float              eHO, eHBHE, eEBEE;
01279   float              elongHF, eshortHF, eEcalHF, eHcalHF;
01280   std::vector<float> eLayer;
01281   std::vector<float> eDepth;
01282   // SimHits parameters
01283   std::vector<float> hitLayer; // float for int
01284   std::vector<float> hitId;    // float for int
01285   std::vector<float> hitEta;
01286   std::vector<float> hitPhi;
01287   std::vector<float> hitE;
01288   std::vector<float> hitTime;
01289 
01290 };
01291 
01292 #endif
01293 
01295 // PHcalValidInfoNxN
01297 
01298 #ifndef  PHcalValidInfoNxN_H
01299 #define  PHcalValidInfoNxN_H
01300 
01301 #include <string>
01302 #include <vector>
01303 #include <memory>
01304 
01305 class SimG4HcalValidation;
01306 
01307 
01308 class PHcalValidInfoNxN {
01309 
01310   friend class SimG4HcalValidation;
01311 
01312 public:
01313        
01314   PHcalValidInfoNxN(): nNxN(0), ecalNxNr(0), hcalNxNr(0.), hoNxNr(0.), 
01315     etotNxNr(0.), ecalNxN(0.), hcalNxN(0.), hoNxN(0.), etotNxN(0.) {}
01316   virtual ~PHcalValidInfoNxN() {}
01317 
01318   // access
01319   std::vector<float> idnxn() const {return idNxN;}
01320   std::vector<float>  enxn() const {return  eNxN;}
01321   std::vector<float>  tnxn() const {return  tNxN;}
01322   int                 nnxn() const {return  nNxN;}
01323   
01324   float           ecalnxnr() const {return ecalNxNr;}
01325   float           hcalnxnr() const {return hcalNxNr;}
01326   float             honxnr() const {return   hoNxNr;}
01327   float           etotnxnr() const {return etotNxNr;}
01328 
01329   float           ecalnxn () const {return ecalNxN ;}
01330   float           hcalnxn () const {return hcalNxN ;}
01331   float             honxn () const {return   hoNxN ;}
01332   float           etotnxn () const {return etotNxN ;}
01333   
01334 
01335   // fill
01336   void fillHvsE        (double ee, double he, double hoe, double etot);
01337   void fillEcollectNxN (double een, double hen, double hoen, double etotn);
01338   void fillTProfileNxN (double e, int i, double t);
01339 
01340 private:
01341 
01342   int                nNxN;
01343   float              ecalNxNr, hcalNxNr, hoNxNr, etotNxNr;
01344   float              ecalNxN,  hcalNxN,  hoNxN,  etotNxN;
01345   std::vector<float> idNxN; // float for int
01346   std::vector<float> eNxN;
01347   std::vector<float> tNxN;
01348 
01349 };
01350 
01351 #endif
01352 
01354 // PMuonSimHit
01356 
01357 #ifndef PMuonSimHit_h
01358 #define PMuonSimHit_h
01359 
01360 #include <vector>
01361 #include <memory>
01362 
01365 
01366 class PMuonSimHit
01367 {
01368  public:
01369 
01370   PMuonSimHit(): nRawGenPart(0), nG4Vtx(0), nG4Trk(0), 
01371                  nCSCHits(0), nDTHits(0), nRPCHits(0) {}
01372   virtual ~PMuonSimHit(){}
01373 
01374   struct Vtx
01375   {
01376     Vtx(): x(0), y(0), z(0) {}
01377     float x;
01378     float y;
01379     float z;
01380   };
01381 
01382   struct Trk
01383   {
01384     Trk() : pt(0), e(0), eta(0), phi(0) {}
01385     float pt;
01386     float e;
01387     float eta;
01388     float phi;
01389   };
01390 
01391 
01392   struct CSC
01393   {
01394     CSC() :
01395          _cscId(0), 
01396          _detUnitId(0),   _trackId(0),     _processType(0), 
01397          _particleType(0),_pabs(0),
01398          _globposz(0),    _globposphi(0),  _globposeta(0), 
01399          _locposx(0),     _locposy(0),     _locposz(0), 
01400          _locdirx(0),     _locdiry(0),     _locdirz(0), 
01401          _locdirtheta(0), _locdirphi(0),
01402          _exitpointx(0),  _exitpointy(0),  _exitpointz(0),
01403          _entrypointx(0), _entrypointy(0), _entrypointz(0), 
01404          _enloss(0),      _tof(0) {}
01405  
01406     int   _cscId;
01407     unsigned int _detUnitId;
01408     float _trackId;
01409     float _processType;
01410     float _particleType;
01411     float _pabs;
01412     float _globposz;
01413     float _globposphi;
01414     float _globposeta;
01415     float _locposx;
01416     float _locposy;
01417     float _locposz;
01418     float _locdirx;
01419     float _locdiry;
01420     float _locdirz;
01421     float _locdirtheta;
01422     float _locdirphi;
01423     float _exitpointx;
01424     float _exitpointy;
01425     float _exitpointz;
01426     float _entrypointx;
01427     float _entrypointy;
01428     float _entrypointz;
01429     float _enloss;
01430     float _tof;
01431   };
01432 
01433   struct DT
01434   {
01435     DT() : 
01436          _detUnitId(0),   _trackId(0),     _processType(0), 
01437          _particleType(0),_pabs(0), 
01438          _globposz(0),    _globposphi(0),  _globposeta(0),
01439          _locposx(0),     _locposy(0),     _locposz(0), 
01440          _locdirx(0),     _locdiry(0),     _locdirz(0), 
01441          _locdirtheta(0), _locdirphi(0),
01442          _exitpointx(0),  _exitpointy(0),  _exitpointz(0),
01443          _entrypointx(0), _entrypointy(0), _entrypointz(0), 
01444          _enloss(0),      _tof(0) {}
01445 
01446     unsigned int _detUnitId;
01447     float _trackId;
01448     float _processType;
01449     float _particleType;
01450     float _pabs;
01451     float _globposz;
01452     float _globposphi;
01453     float _globposeta;
01454     float _locposx;
01455     float _locposy;
01456     float _locposz;
01457     float _locdirx;
01458     float _locdiry;
01459     float _locdirz;
01460     float _locdirtheta;
01461     float _locdirphi;
01462     float _exitpointx;
01463     float _exitpointy;
01464     float _exitpointz;
01465     float _entrypointx;
01466     float _entrypointy;
01467     float _entrypointz;
01468     float _enloss;
01469     float _tof;
01470   };
01471 
01472   struct RPC
01473   {
01474     RPC() : 
01475          _detUnitId(0),   _trackId(0),     _processType(0), 
01476          _particleType(0),_pabs(0), 
01477          _globposz(0),    _globposphi(0),  _globposeta(0),
01478          _locposx(0),     _locposy(0),     _locposz(0), 
01479          _locdirx(0),     _locdiry(0),     _locdirz(0), 
01480          _locdirtheta(0), _locdirphi(0),
01481          _exitpointx(0),  _exitpointy(0),  _exitpointz(0),
01482          _entrypointx(0), _entrypointy(0), _entrypointz(0), 
01483          _enloss(0),      _tof(0) {}
01484 
01485     unsigned int _detUnitId;
01486     float _trackId;
01487     float _processType;
01488     float _particleType;
01489     float _pabs;
01490     float _globposz;
01491     float _globposphi;
01492     float _globposeta;
01493     float _locposx;
01494     float _locposy;
01495     float _locposz;
01496     float _locdirx;
01497     float _locdiry;
01498     float _locdirz;
01499     float _locdirtheta;
01500     float _locdirphi;
01501     float _exitpointx;
01502     float _exitpointy;
01503     float _exitpointz;
01504     float _entrypointx;
01505     float _entrypointy;
01506     float _entrypointz;
01507     float _enloss;
01508     float _tof;
01509   };
01510 
01511   typedef std::vector<Vtx> VtxVector;
01512   typedef std::vector<Trk> TrkVector;
01513 
01514   typedef std::vector<CSC> CSCVector;
01515   typedef std::vector<DT>  DTVector;
01516   typedef std::vector<RPC>  RPCVector;
01517 
01519 
01520   void putRawGenPart(int n);
01521 
01522   void putG4Vtx(const std::vector<float>& x,   const std::vector<float>& y,
01523                 const std::vector<float>& z);
01524   void putG4Trk(const std::vector<float>& pt,  const std::vector<float>& e,
01525                 const std::vector<float>& eta, const std::vector<float>& phi);  
01526 
01527   void putCSCHits(
01528                const std::vector<int>&  _cscId,
01529                const std::vector<unsigned int>& _detUnitId,
01530                const std::vector<float>& _trackId , 
01531                const std::vector<float>& _processType,
01532                const std::vector<float>& _particleType, 
01533                const std::vector<float>& _pabs,
01534                const std::vector<float>& _globposz, 
01535                const std::vector<float>& _globposphi, 
01536                const std::vector<float>& _globposeta,
01537                const std::vector<float>& _locposx, 
01538                const std::vector<float>& _locposy, 
01539                const std::vector<float>& _locposz,
01540                const std::vector<float>& _locdirx, 
01541                const std::vector<float>& _locdiry, 
01542                const std::vector<float>& _locdirz,
01543                const std::vector<float>& _locdirtheta, 
01544                const std::vector<float>& _locdirphi, 
01545                const std::vector<float>& _exitpointx, 
01546                const std::vector<float>& _exitpointy, 
01547                const std::vector<float>& _exitpointz,
01548                const std::vector<float>& _entrypointx, 
01549                const std::vector<float>& _entrypointy, 
01550                const std::vector<float>& _entrypointz,
01551                const std::vector<float>& _enloss, 
01552                const std::vector<float>& _tof);   
01553 
01554   void putDTHits(
01555                const std::vector<unsigned int>& _detUnitId,
01556                const std::vector<float>& _trackId , 
01557                const std::vector<float>& _processType,
01558                const std::vector<float>& _particleType, 
01559                const std::vector<float>& _pabs,
01560                const std::vector<float>& _globposz, 
01561                const std::vector<float>& _globposphi, 
01562                const std::vector<float>& _globposeta,
01563                const std::vector<float>& _locposx, 
01564                const std::vector<float>& _locposy, 
01565                const std::vector<float>& _locposz,
01566                const std::vector<float>& _locdirx, 
01567                const std::vector<float>& _locdiry, 
01568                const std::vector<float>& _locdirz,
01569                const std::vector<float>& _locdirtheta, 
01570                const std::vector<float>& _locdirphi, 
01571                const std::vector<float>& _exitpointx, 
01572                const std::vector<float>& _exitpointy, 
01573                const std::vector<float>& _exitpointz,
01574                const std::vector<float>& _entrypointx, 
01575                const std::vector<float>& _entrypointy, 
01576                const std::vector<float>& _entrypointz,
01577                const std::vector<float>& _enloss, 
01578                const std::vector<float>& _tof); 
01579 
01580   void putRPCHits(
01581                const std::vector<unsigned int>& _detUnitId,
01582                const std::vector<float>& _trackId , 
01583                const std::vector<float>& _processType,
01584                const std::vector<float>& _particleType, 
01585                const std::vector<float>& _pabs,
01586                const std::vector<float>& _globposz, 
01587                const std::vector<float>& _globposphi, 
01588                const std::vector<float>& _globposeta,
01589                const std::vector<float>& _locposx, 
01590                const std::vector<float>& _locposy, 
01591                const std::vector<float>& _locposz,
01592                const std::vector<float>& _locdirx, 
01593                const std::vector<float>& _locdiry, 
01594                const std::vector<float>& _locdirz,
01595                const std::vector<float>& _locdirtheta, 
01596                const std::vector<float>& _locdirphi, 
01597                const std::vector<float>& _exitpointx, 
01598                const std::vector<float>& _exitpointy, 
01599                const std::vector<float>& _exitpointz,
01600                const std::vector<float>& _entrypointx, 
01601                const std::vector<float>& _entrypointy, 
01602                const std::vector<float>& _entrypointz,
01603                const std::vector<float>& _enloss, 
01604                const std::vector<float>& _tof); 
01605 
01607 
01608   int getnRawGenPart() {return nRawGenPart;}
01609   int getnG4Vtx() {return nG4Vtx;}
01610   int getnG4Trk() {return nG4Trk;}
01611 
01612   VtxVector getG4Vtx() {return G4Vtx;}
01613   TrkVector getG4Trk() {return G4Trk;}
01614 
01615   int getnCSCHits() {return nCSCHits;}
01616   CSCVector getCSCHits() {return CSCHits;}
01617 
01618   int getnDTHits() {return nDTHits;}
01619   DTVector getDTHits() {return DTHits;}
01620 
01621   int getnRPCHits() {return nRPCHits;}
01622   RPCVector getRPCHits() {return RPCHits;}
01623 
01624  
01625 private:
01626 
01628 
01629   int nRawGenPart;
01630   int nG4Vtx;
01631   VtxVector G4Vtx; 
01632   int nG4Trk; 
01633   TrkVector G4Trk;
01634  
01636 
01637   int nCSCHits;
01638   CSCVector CSCHits; 
01639 
01640   int nDTHits;
01641   DTVector DTHits; 
01642 
01643   int nRPCHits;
01644   RPCVector RPCHits; 
01645 
01646 };
01647 
01648 #endif
01649 
01651 // PTrackerSimHit
01653 
01654 #ifndef PTrackerSimHit_h
01655 #define PTrackerSimHit_h
01656 
01657 #include <vector>
01658 #include <memory>
01659 
01660 class PTrackerSimHit
01661 {
01662 
01663  public:
01664 
01665   PTrackerSimHit(): nRawGenPart(0), nG4Vtx(0), nG4Trk(0), nHits(0) {}
01666   virtual ~PTrackerSimHit(){}
01667 
01668   struct Vtx
01669   {
01670     Vtx(): x(0), y(0), z(0) {}
01671     float x;
01672     float y;
01673     float z;
01674   };
01675 
01676   struct Trk
01677   {
01678     Trk() : pt(0), e(0), eta(0), phi(0) {}
01679     float pt;
01680     float e;
01681     float eta;
01682     float phi;
01683   };
01684 
01685 
01686   struct Hit
01687   {
01688     Hit() : _sysID(0), _detUnitId(0), _trackId(0), _processType(0), 
01689             _particleType(0), _pabs(0), 
01690             _lpx(0), _lpy(0), _lpz(0), 
01691             _ldx(0), _ldy(0), _ldz(0), _ldtheta(0), _ldphi(0),
01692             _exx(0), _exy(0), _exz(0),
01693             _enx(0), _eny(0), _enz(0), _eloss(0), _tof(0) {}
01694     int   _sysID; 
01695     float _detUnitId;
01696     float _trackId;
01697     float _processType;
01698     float _particleType;
01699     float _pabs;
01700     float _lpx;
01701     float _lpy;
01702     float _lpz;
01703     float _ldx;
01704     float _ldy;
01705     float _ldz;
01706     float _ldtheta;
01707     float _ldphi;
01708     float _exx;
01709     float _exy;
01710     float _exz;
01711     float _enx;
01712     float _eny;
01713     float _enz;
01714     float _eloss;
01715     float _tof;
01716   };
01717 
01718 
01719   typedef std::vector<Vtx> VtxVector;
01720   typedef std::vector<Trk> TrkVector;
01721   typedef std::vector<Hit> HitVector;
01722 
01723   // put functions
01724   void putRawGenPart(int n);
01725   void putG4Vtx(const std::vector<float> &x, const std::vector<float> &y, const std::vector<float> &z);
01726   void putG4Trk(const std::vector<float> &pt, const std::vector<float> &e, const std::vector<float> &eta, const std::vector<float> &phi);  
01727   void putHits(const std::vector<int> &_sysID, const std::vector<float> &_detUnitId,
01728                const std::vector<float>&_trackId , const std::vector<float>&_processType,
01729                const std::vector<float>&_particleType, const std::vector<float> &_pabs,
01730                const std::vector<float>&_lpx, const std::vector<float>&_lpy, const std::vector<float>&_lpz,
01731                const std::vector<float>&_ldx, const std::vector<float>&_ldy, const std::vector<float>&_ldz,
01732                const std::vector<float>&_ldtheta, const std::vector<float>&_ldphi, 
01733                const std::vector<float>&_exx, const std::vector<float>&_exy, const std::vector<float>&_exz,
01734                const std::vector<float>&_enx, const std::vector<float>&_eny, const std::vector<float>&_enz,
01735                const std::vector<float>&_eloss, const std::vector<float>&_tof);   
01736 
01737   // get functions
01738   int getnRawGenPart() {return nRawGenPart;}
01739   int getnG4Vtx() {return nG4Vtx;}
01740   VtxVector getG4Vtx() {return G4Vtx;}
01741   int getnG4Trk() {return nG4Trk;}
01742   TrkVector getG4Trk() {return G4Trk;}
01743   int getnHits() {return nHits;}
01744   HitVector getHits() {return Hits;}
01745 
01746  private:
01747 
01748   // G4MC info
01749   int nRawGenPart;
01750   int nG4Vtx;
01751   VtxVector G4Vtx; 
01752   int nG4Trk; 
01753   TrkVector G4Trk; 
01754   // Tracker info
01755   int nHits;
01756   HitVector Hits; 
01757 
01758 
01759 }; // end class declaration
01760 
01761 #endif
01762 
01763 #endif // endif PValidationFormats_h