00001 #ifndef SimG4CMS_HFCherenkov_h
00002 #define SimG4CMS_HFCherenkov_h 1
00004 // File: HFCherenkov.h
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 computeNPhTrapped(double pBeta, double u, double v,
00031 double w, double step_length,
00032 double zFiber, double Dose,
00033 int Npe_Dose);
00034 double smearNPE(G4int Npe);
00035
00036 std::vector<double> getMom();
00037 std::vector<double> getWL();
00038 std::vector<double> getWLIni();
00039 std::vector<double> getWLTrap();
00040 std::vector<double> getWLAtten();
00041 std::vector<double> getWLHEM();
00042 std::vector<double> getWLQEff();
00043 void clearVectors();
00044
00045 private:
00046
00047 bool isApplicable(const G4ParticleDefinition* aParticleType);
00048
00049 int computeNbOfPhotons(double pBeta, double step_length);
00050 double computeQEff(double wavelength);
00051 double computeHEMEff(double wavelength);
00052
00053 private:
00054
00055 double ref_index;
00056 double lambda1, lambda2;
00057 double aperture, apertureTrap;
00058 double gain;
00059 bool checkSurvive;
00060
00061 G4ThreeVector phMom;
00062 std::vector<double> wl;
00063 std::vector<double> momZ;
00064 std::vector<double> wlini;
00065 std::vector<double> wltrap;
00066 std::vector<double> wlatten;
00067 std::vector<double> wlhem;
00068 std::vector<double> wlqeff;
00069 };
00070
00071 #endif
00072