Go to the documentation of this file.00001 #ifndef HitDigitizerFP420_h
00002 #define HitDigitizerFP420_h
00003
00004
00005
00006 #include "SimRomanPot/SimFP420/interface/CDrifterFP420.h"
00007 #include "SimRomanPot/SimFP420/interface/CDividerFP420.h"
00008 #include "SimRomanPot/SimFP420/interface/IChargeFP420.h"
00009 #include "SimDataFormats/TrackingHit/interface/PSimHit.h"
00010 #include "SimDataFormats/TrackingHit/interface/PSimHitContainer.h"
00011
00012
00013 #include<vector>
00014 #include <map>
00015
00016
00017 class HitDigitizerFP420{
00018 public:
00019
00020 typedef std::map<int, float, std::less<int> > hit_map_type;
00021
00022
00023
00024 HitDigitizerFP420(float in, float ild, float ildx, float ildy, float in0, float in2, float in3, int verbosity);
00025
00026
00027 ~HitDigitizerFP420();
00028
00029 void setChargeDivider(CDividerFP420* cd){
00030 if (theCDividerFP420) delete theCDividerFP420;
00031 theCDividerFP420 = cd;
00032 }
00033 void setChargeCollectionDrifter(CDrifterFP420* cd){
00034 if (theCDrifterFP420) delete theCDrifterFP420;
00035 theCDrifterFP420 = cd;
00036 }
00037 void setInduceChargeOnElectrods(IChargeFP420* cd){
00038 if (theIChargeFP420) delete theIChargeFP420;
00039 theIChargeFP420 = cd;
00040 }
00041
00042
00043
00044
00045
00046
00047 hit_map_type processHit(const PSimHit&, G4ThreeVector, int, int, double, int, double, double, int);
00048
00049 private:
00050 CDividerFP420* theCDividerFP420;
00051 CDrifterFP420* theCDrifterFP420;
00052 IChargeFP420* theIChargeFP420;
00053
00054 double moduleThickness;
00055
00056
00057
00058 double depletionVoltage;
00059 double appliedVoltage;
00060 double chargeMobility;
00061 double temperature;
00062 bool noDiffusion;
00063 double chargeDistributionRMS;
00064 double gevperelectron;
00065
00066 G4ThreeVector DriftDirection(G4ThreeVector,int,int);
00067
00068
00069
00070 float tanLorentzAnglePerTesla;
00071
00072 };
00073
00074 #endif