File indexing completed on 2024-04-06 12:30:42
0001 #ifndef MU_END_DRIFT_SIM_H
0002 #define MU_END_DRIFT_SIM_H
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 #include <vector>
0021 class CSCLayer;
0022 class CSCDetectorHit;
0023 class PSimHit;
0024 class MagneticField;
0025 #include "DataFormats/GeometryVector/interface/LocalPoint.h"
0026 #include "DataFormats/MuonDetId/interface/CSCDetId.h"
0027
0028 namespace CLHEP {
0029 class HepRandomEngine;
0030 }
0031
0032 class CSCDriftSim {
0033 public:
0034 CSCDriftSim();
0035
0036 ~CSCDriftSim();
0037
0038
0039
0040
0041 CSCDetectorHit getWireHit(const Local3DPoint &ionClusterPosition,
0042 const CSCLayer *,
0043 int wire,
0044 const PSimHit &simHit,
0045 CLHEP::HepRandomEngine *);
0046
0047 void setMagneticField(const MagneticField *field) { theMagneticField = field; }
0048
0049 private:
0050
0051 double avgPathLengthLowB();
0052 double pathSigmaLowB();
0053 double avgDriftTimeLowB();
0054 double driftTimeSigmaLowB();
0055 double avgPathLengthHighB();
0056 double pathSigmaHighB();
0057 double avgDriftTimeHighB();
0058 double driftTimeSigmaHighB();
0059 double avgDrift() const;
0060 double driftSigma() const;
0061 double avalancheCharge(CLHEP::HepRandomEngine *);
0062 double gasGain(const CSCDetId &id) const;
0063
0064
0065 float bz;
0066
0067 double ycell, zcell;
0068
0069 std::vector<double> dNdEIntegral;
0070 const double STEP_SIZE;
0071
0072 const double ELECTRON_DIFFUSION_COEFF;
0073
0074 const MagneticField *theMagneticField;
0075 };
0076
0077 #endif