CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_1/src/SimRomanPot/SimFP420/interface/HitDigitizerFP420.h

Go to the documentation of this file.
00001 #ifndef HitDigitizerFP420_h
00002 #define HitDigitizerFP420_h
00003  
00004 //#include "SimG4CMS/FP420/interface/FP420G4HitCollection.h"
00005 //#include "SimG4CMS/FP420/interface/FP420G4Hit.h"
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 // Digitizes the response for a single FP420Hit
00017 class HitDigitizerFP420{
00018  public:
00019 
00020   typedef std::map<int, float, std::less<int> > hit_map_type;
00021   
00022   //HitDigitizerFP420(const edm::ParameterSet& conf, const ElectrodGeomDetUnit *det);
00023   //HitDigitizerFP420(float in, float inp, float inpx, float inpy,float ild,float ildx,float ildy);
00024   HitDigitizerFP420(float in, float ild, float ildx, float ildy, float in0, float in2, float in3, int verbosity);
00025   //HitDigitizerFP420(float in, float inp, float inpx, float inpy);
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   //CDividerFP420* getChargeDivider(){return theCDividerFP420;}
00043   //CDrifterFP420* getChargeCollectionDrifter(){return theCDrifterFP420;}
00044   //IChargeFP420* getInduceChargeOnElectrods(){return theIChargeFP420;}
00045   
00046   //  hit_map_type processHit(const PSimHit&, G4ThreeVector, int, int, double);
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   //  double pitch;
00056   // double pitchX;
00057   // double pitchY;
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   //  typedef GloballyPositioned<double>      Frame;  //  AZ
00069   
00070   float tanLorentzAnglePerTesla;   //Lorentz angle tangent per Tesla
00071   
00072 };
00073 
00074 #endif