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 "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
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