CMS 3D CMS Logo

MTDRecHitAlgo.cc
Go to the documentation of this file.
2 
5 
7 public:
10  : MTDRecHitAlgoBase(conf, sumes),
11  thresholdToKeep_(conf.getParameter<double>("thresholdToKeep")),
12  calibration_(conf.getParameter<double>("calibrationConstant")) {}
13 
15  ~MTDRecHitAlgo() override {}
16 
18  void getEvent(const edm::Event&) final {}
19  void getEventSetup(const edm::EventSetup&) final;
20 
22  FTLRecHit makeRecHit(const FTLUncalibratedRecHit& uRecHit, uint32_t& flags) const final;
23 
24 private:
27 };
28 
31  es.get<MTDTimeCalibRecord>().get("MTDTimeCalib", pTC);
32  time_calib_ = pTC.product();
33 }
34 
36  unsigned char flagsWord = uRecHit.flags();
37  float timeError = uRecHit.timeError();
38 
39  float energy = 0.;
40  float time = 0.;
41 
42  switch (flagsWord) {
43  // BTL bar geometry with only the right SiPM information available
44  case 0x2: {
45  energy = uRecHit.amplitude().second;
46  time = uRecHit.time().second;
47 
48  break;
49  }
50  // BTL bar geometry with left and right SiPMs information available
51  case 0x3: {
52  energy = 0.5 * (uRecHit.amplitude().first + uRecHit.amplitude().second);
53  time = 0.5 * (uRecHit.time().first + uRecHit.time().second);
54 
55  break;
56  }
57  // ETL, BTL tile geometry, BTL bar geometry with only the left SiPM information available
58  default: {
59  energy = uRecHit.amplitude().first;
60  time = uRecHit.time().first;
61 
62  break;
63  }
64  }
65 
66  // --- Energy calibration: for the time being this is just a conversion pC --> MeV
67  energy *= calibration_;
68 
69  // --- Time calibration: for the time being just removes a time offset in BTL
70  time += time_calib_->getTimeCalib(uRecHit.id());
71 
72  FTLRecHit rh(uRecHit.id(), uRecHit.row(), uRecHit.column(), energy, time, timeError);
73 
74  // Now fill flags
75  // all rechits from the digitizer are "good" at present
76  if (energy > thresholdToKeep_) {
77  flags = FTLRecHit::kGood;
78  rh.setFlag(flags);
79  } else {
80  flags = FTLRecHit::kKilled;
81  rh.setFlag(flags);
82  }
83 
84  return rh;
85 }
86 
std::pair< float, float > time() const
void getEvent(const edm::Event &) final
get event and eventsetup information
~MTDRecHitAlgo() override
Destructor.
FTLRecHit makeRecHit(const FTLUncalibratedRecHit &uRecHit, uint32_t &flags) const final
make the rec hit
std::pair< float, float > amplitude() const
double thresholdToKeep_
void getEventSetup(const edm::EventSetup &) final
double calibration_
MTDRecHitAlgo(const edm::ParameterSet &conf, edm::ConsumesCollector &sumes)
Constructor.
Definition: MTDRecHitAlgo.cc:9
float getTimeCalib(const MTDDetId &id) const
Definition: MTDTimeCalib.cc:19
T get() const
Definition: EventSetup.h:73
#define DEFINE_EDM_PLUGIN(factory, type, name)
const MTDTimeCalib * time_calib_
unsigned char flags() const
T const * product() const
Definition: ESHandle.h:86