CMS 3D CMS Logo

CMSSW_4_4_3_patch1/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 "G4ThreeVector.hh"
00014 #include "globals.hh"
00015 
00016 #include <vector>
00017 
00018 class HFCherenkov {
00019   
00020 public:
00021 
00022    HFCherenkov(edm::ParameterSet const & p);
00023    virtual ~HFCherenkov();
00024   
00025    int                 computeNPE(G4ParticleDefinition* pDef,double pBeta, 
00026                                   double u, double v, double w, 
00027                                   double step_length, double zFiber, 
00028                                   double Dose, int Npe_Dose);
00029    
00030    int                 computeNPEinPMT(G4ParticleDefinition* pDef,double pBeta,
00031                                        double u, double v, double w, 
00032                                        double step_length);
00033 
00034    int                 computeNPhTrapped(double pBeta, double u, double v, 
00035                                          double w, double step_length,
00036                                          double zFiber, double Dose,
00037                                          int Npe_Dose);
00038    double              smearNPE(G4int Npe);                               
00039 
00040    std::vector<double> getMom();
00041    std::vector<double> getWL();
00042    std::vector<double> getWLIni();
00043    std::vector<double> getWLTrap();
00044    std::vector<double> getWLAtten();
00045    std::vector<double> getWLHEM();
00046    std::vector<double> getWLQEff();
00047    void                clearVectors();
00048                                           
00049 private:
00050 
00051    bool                isApplicable(const G4ParticleDefinition* aParticleType);
00052    // Returns true -> 'is applicable', for all charged particles.
00053    int                 computeNbOfPhotons(double pBeta, double step_length);
00054    double              computeQEff(double wavelength);
00055    double              computeHEMEff(double wavelength);
00056 
00057 private:
00058 
00059    double              ref_index;
00060    double              lambda1, lambda2;
00061    double              aperture, apertureTrap;
00062    double              gain;
00063    bool                checkSurvive;
00064 
00065    G4ThreeVector       phMom;
00066    std::vector<double> wl;
00067    std::vector<double> momZ;
00068    std::vector<double> wlini;
00069    std::vector<double> wltrap;
00070    std::vector<double> wlatten;
00071    std::vector<double> wlhem;
00072    std::vector<double> wlqeff;
00073 };
00074 
00075 #endif
00076