File indexing completed on 2024-04-06 12:30:42
0001 #ifndef MU_END_DIGITIZER
0002 #define MU_END_DIGITIZER
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #include "CLHEP/Random/RandomEngine.h"
0014 #include "DataFormats/CSCDigi/interface/CSCComparatorDigiCollection.h"
0015 #include "DataFormats/CSCDigi/interface/CSCStripDigiCollection.h"
0016 #include "DataFormats/CSCDigi/interface/CSCWireDigiCollection.h"
0017 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0018 #include "Geometry/CSCGeometry/interface/CSCGeometry.h"
0019 #include "MagneticField/Engine/interface/MagneticField.h"
0020 #include "SimDataFormats/CrossingFrame/interface/MixCollection.h"
0021 #include "SimDataFormats/TrackingHit/interface/PSimHitContainer.h"
0022 #include "SimGeneral/HepPDTRecord/interface/ParticleDataTable.h"
0023
0024 #include "DataFormats/Common/interface/DetSetVector.h"
0025 #include "SimDataFormats/TrackerDigiSimLink/interface/StripDigiSimLink.h"
0026
0027 class CSCDriftSim;
0028 class CSCWireHitSim;
0029 class CSCStripHitSim;
0030 class CSCWireElectronicsSim;
0031 class CSCStripElectronicsSim;
0032 class CSCLayer;
0033 class CSCNeutronReader;
0034 class CSCStripConditions;
0035
0036 namespace CLHEP {
0037 class HepRandomEngine;
0038 }
0039
0040 class CSCDigitizer {
0041 public:
0042 typedef edm::DetSetVector<StripDigiSimLink> DigiSimLinks;
0043
0044 ~CSCDigitizer();
0045 CSCDigitizer(const CSCDigitizer &) = delete;
0046 CSCDigitizer &operator=(const CSCDigitizer &) = delete;
0047
0048
0049 explicit CSCDigitizer(const edm::ParameterSet &p);
0050
0051
0052
0053 void doAction(MixCollection<PSimHit> &simHits,
0054 CSCWireDigiCollection &wireDigis,
0055 CSCStripDigiCollection &stripDigis,
0056 CSCComparatorDigiCollection &comparators,
0057 DigiSimLinks &wireDigiSimLinks,
0058 DigiSimLinks &stripDigiSimLinks,
0059 CLHEP::HepRandomEngine *);
0060
0061
0062 void setGeometry(const CSCGeometry *geom) { theCSCGeometry = geom; }
0063
0064
0065 void setMagneticField(const MagneticField *field);
0066
0067 void setStripConditions(CSCStripConditions *cond);
0068
0069 void setParticleDataTable(const ParticleDataTable *pdt);
0070
0071 private:
0072
0073 const CSCLayer *findLayer(int detId) const;
0074
0075
0076 std::list<int> layersMissing(const CSCStripDigiCollection &stripDigis) const;
0077
0078 CSCDriftSim *theDriftSim;
0079 CSCWireHitSim *theWireHitSim;
0080 CSCStripHitSim *theStripHitSim;
0081 CSCWireElectronicsSim *theWireElectronicsSim;
0082 CSCStripElectronicsSim *theStripElectronicsSim;
0083 CSCNeutronReader *theNeutronReader;
0084 const CSCGeometry *theCSCGeometry;
0085 CSCStripConditions *theConditions;
0086 unsigned int theLayersNeeded;
0087 bool digitizeBadChambers_;
0088 };
0089
0090 #endif