CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/SimG4CMS/Calo/interface/HFCherenkov.h

Go to the documentation of this file.
00001 #ifndef SimG4CMS_HFCherenkov_h
00002 #define SimG4CMS_HFCherenkov_h 1
00003 
00004 // File:  HFCherenkov.h
00005 // Description: Generate Cherenkov photons for HF
00007 
00008 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00009 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00010 
00011 #include "G4DynamicParticle.hh"
00012 #include "G4ParticleDefinition.hh"
00013 #include "G4Step.hh"
00014 #include "G4ThreeVector.hh"
00015 #include "globals.hh"
00016 
00017 #include <vector>
00018 
00019 class HFCherenkov {
00020   
00021 public:
00022 
00023    HFCherenkov(edm::ParameterSet const & p);
00024    virtual ~HFCherenkov();
00025   
00026    int                 computeNPE(G4Step* step, G4ParticleDefinition* pDef,
00027                                   double pBeta, double u, double v, double w, 
00028                                   double step_length, double zFiber, 
00029                                   double Dose, int Npe_Dose);
00030    
00031    int                 computeNPEinPMT(G4ParticleDefinition* pDef,double pBeta,
00032                                        double u, double v, double w, 
00033                                        double step_length);
00034 
00035    int                 computeNPhTrapped(double pBeta, double u, double v, 
00036                                          double w, double step_length,
00037                                          double zFiber, double Dose,
00038                                          int Npe_Dose);
00039    double              smearNPE(G4int Npe);                               
00040 
00041    std::vector<double> getMom();
00042    std::vector<double> getWL();
00043    std::vector<double> getWLIni();
00044    std::vector<double> getWLTrap();
00045    std::vector<double> getWLAtten();
00046    std::vector<double> getWLHEM();
00047    std::vector<double> getWLQEff();
00048    void                clearVectors();
00049                                           
00050 private:
00051 
00052    bool                isApplicable(const G4ParticleDefinition* aParticleType);
00053    // Returns true -> 'is applicable', for all charged particles.
00054    int                 computeNbOfPhotons(double pBeta, double step_length);
00055    double              computeQEff(double wavelength);
00056    double              computeHEMEff(double wavelength);
00057 
00058 private:
00059 
00060    double              ref_index;
00061    double              lambda1, lambda2;
00062    double              aperture, aperturetrapped, apertureTrap;
00063    double              gain, fibreR, sinPsimax;
00064    bool                checkSurvive;
00065    bool                UseNewPMT;
00066 
00067    G4ThreeVector       phMom;
00068    std::vector<double> wl;
00069    std::vector<double> momZ;
00070    std::vector<double> wlini;
00071    std::vector<double> wltrap;
00072    std::vector<double> wlatten;
00073    std::vector<double> wlhem;
00074    std::vector<double> wlqeff;
00075 };
00076 
00077 #endif
00078