CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_2_9_HLT1_bphpatch4/src/Validation/EcalHits/interface/EcalSimHitsValidProducer.h

Go to the documentation of this file.
00001 #ifndef _EcalSimHitsValidProducer_h
00002 #define _EcalSimHitsValidProducer_h
00003 #include <string>
00004 #include <vector>
00005 #include <map>
00006  
00007 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00008 #include "SimG4Core/Watcher/interface/SimProducer.h"
00009 #include "SimG4Core/Notification/interface/Observer.h"
00010 #include "DataFormats/EcalDetId/interface/EEDetId.h"
00011 #include "DataFormats/EcalDetId/interface/EBDetId.h"
00012 #include "DataFormats/EcalDetId/interface/ESDetId.h"
00013 
00014 #include "DataFormats/Math/interface/LorentzVector.h"
00015 
00016 class BeginOfEvent;
00017 class G4Step;
00018 class EndOfEvent;
00019 class PEcalValidInfo;
00020 
00021 class EcalSimHitsValidProducer : public SimProducer,
00022                          public Observer<const BeginOfEvent*>,
00023                          public Observer<const G4Step*>,
00024                          public Observer<const EndOfEvent*>
00025 {
00026     typedef std::vector<float>  FloatVector;
00027     typedef std::map<uint32_t,float,std::less<uint32_t> >  MapType;
00028 
00029 public:
00030     EcalSimHitsValidProducer(const edm::ParameterSet&);
00031     virtual ~EcalSimHitsValidProducer();
00032 
00033     void produce(edm::Event&, const edm::EventSetup&);
00034 
00035 
00036 private:
00037    EcalSimHitsValidProducer(const EcalSimHitsValidProducer&); // stop default
00038    const EcalSimHitsValidProducer& operator=(const EcalSimHitsValidProducer&); // stop default
00039 
00040    void update(const BeginOfEvent*);
00041    void update(const G4Step*);
00042    void update(const EndOfEvent*);
00043    
00044    void fillEventInfo(PEcalValidInfo&);
00045 
00046 private:
00047   uint32_t getUnitWithMaxEnergy(MapType& themap);
00048 
00049   float energyInEEMatrix(int nCellInX, int nCellInY,
00050                                 int centralX, int centralY, int centralZ,
00051                                 MapType& themap);
00052   float energyInEBMatrix(int nCellInX, int nCellInY,
00053                                 int centralX, int centralY, int centralZ,
00054                                 MapType& themap);
00055   
00056 
00057    bool  fillEEMatrix(int nCellInEta, int nCellInPhi,
00058                          int CentralEta, int CentralPhi,int CentralZ,
00059                                       MapType& fillmap, MapType&  themap);
00060 
00061   bool  fillEBMatrix(int nCellInEta, int nCellInPhi,
00062                        int CentralEta, int CentralPhi,int CentralZ,
00063                                      MapType& fillmap, MapType&  themap);
00064 
00065   float eCluster2x2( MapType& themap);
00066   float eCluster4x4(float e33,MapType& themap);
00067       
00068 private:
00069   float  ee1;
00070   float  ee4;
00071   float  ee9;
00072   float  ee16;
00073   float  ee25;
00074 
00075   float  eb1;
00076   float  eb4;
00077   float  eb9;
00078   float  eb16;
00079   float  eb25;
00080 
00081   float totalEInEE;
00082   float totalEInEB; 
00083   float totalEInES;
00084 
00085   float totalEInEEzp;
00086   float totalEInEEzm;
00087   float totalEInESzp;
00088   float totalEInESzm;
00089 
00090   int totalHits;
00091   int nHitsInEE;
00092   int nHitsInEB;
00093   int nHitsInES;
00094   int nHitsIn1ES;
00095   int nHitsIn2ES;
00096   int nCrystalInEB;
00097   int nCrystalInEEzp;
00098   int nCrystalInEEzm;
00099 
00100   int nHitsIn1ESzp;
00101   int nHitsIn1ESzm;
00102   int nHitsIn2ESzp;
00103   int nHitsIn2ESzm;
00104 
00105   float  eBX0[26];
00106   float  eEX0[26];
00107 
00108  
00109   FloatVector  eOf1ES;
00110   FloatVector  eOf2ES;
00111   FloatVector  eOf1ESzp;
00112   FloatVector  eOf1ESzm;
00113   FloatVector  eOf2ESzp;
00114   FloatVector  eOf2ESzm;
00115 
00116 
00117   FloatVector  zOfES;
00118   FloatVector  phiOfEECaloG4Hit; 
00119   FloatVector  etaOfEECaloG4Hit;
00120   FloatVector  tOfEECaloG4Hit;
00121   FloatVector  eOfEECaloG4Hit;
00122   FloatVector  eOfEEPlusCaloG4Hit;
00123   FloatVector  eOfEEMinusCaloG4Hit;
00124 
00125   FloatVector  phiOfEBCaloG4Hit;
00126   FloatVector  etaOfEBCaloG4Hit;
00127   FloatVector  tOfEBCaloG4Hit;
00128   FloatVector  eOfEBCaloG4Hit;
00129 
00130   FloatVector  phiOfESCaloG4Hit;
00131   FloatVector  etaOfESCaloG4Hit;
00132   FloatVector  tOfESCaloG4Hit;
00133   FloatVector  eOfESCaloG4Hit;
00134 
00135   math::XYZTLorentzVector theMomentum;
00136   math::XYZTLorentzVector theVertex;
00137 
00138   int     thePID; 
00139   std::string  label;
00140 };
00141 
00142 #endif