Go to the documentation of this file.00001 #ifndef SimG4CMS_HFCherenkov_h
00002 #define SimG4CMS_HFCherenkov_h 1
00003
00004
00005
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
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