CMS 3D CMS Logo

TotemTimingRecHitProducer.cc
Go to the documentation of this file.
1 /****************************************************************************
2  *
3  * This is a part of CTPPS offline software.
4  * Authors:
5  * Laurent Forthomme (laurent.forthomme@cern.ch)
6  * Nicola Minafra (nicola.minafra@cern.ch)
7  *
8  ****************************************************************************/
9 
10 #include <memory>
11 
18 
21 
24 
28 
30 
34 
37 public:
39 
41 
42 private:
43  void produce(edm::Event&, const edm::EventSetup&) override;
44 
53 };
54 
56  : digiToken_(consumes<edm::DetSetVector<TotemTimingDigi> >(iConfig.getParameter<edm::InputTag>("digiTag"))),
57  timingCalibrationTag_(iConfig.getParameter<std::string>("timingCalibrationTag")),
58  algo_(iConfig) {
59  produces<edm::DetSetVector<TotemTimingRecHit> >();
60 }
61 
63  std::unique_ptr<edm::DetSetVector<TotemTimingRecHit> > pOut(new edm::DetSetVector<TotemTimingRecHit>);
64 
65  // get the digi collection
67  iEvent.getByToken(digiToken_, digis);
68 
69  // do not retrieve the calibration parameters if no digis were found
70  if (!digis->empty()) {
71  // check for timing calibration parameters update
72  if (calibWatcher_.check(iSetup)) {
74  iSetup.get<PPSTimingCalibrationRcd>().get(timingCalibrationTag_, hTimingCalib);
75  algo_.setCalibration(*hTimingCalib);
76  }
77 
78  // get the geometry
81 
82  // produce the rechits collection
83  algo_.build(*geometry, *digis, *pOut);
84  }
85 
86  iEvent.put(std::move(pOut));
87 }
88 
91 
92  desc.add<edm::InputTag>("digiTag", edm::InputTag("totemTimingRawToDigi", "TotemTiming"))
93  ->setComment("input digis collection to retrieve");
94  desc.add<std::string>("timingCalibrationTag", "GlobalTag:TotemTimingCalibration")
95  ->setComment("input tag for timing calibrations retrieval");
96  desc.add<int>("baselinePoints", 8)->setComment("number of points to be used for the baseline");
97  desc.add<double>("saturationLimit", 0.85)
98  ->setComment("all signals with max > saturationLimit will be considered as saturated");
99  desc.add<double>("cfdFraction", 0.3)->setComment("fraction of the CFD");
100  desc.add<int>("smoothingPoints", 20)
101  ->setComment("number of points to be used for the smoothing using sinc (lowpass)");
102  desc.add<double>("lowPassFrequency", 0.7)
103  ->setComment("Frequency (in GHz) for CFD smoothing, 0 for disabling the filter");
104  desc.add<double>("hysteresis", 5.e-3)->setComment("hysteresis of the discriminator");
105  desc.add<bool>("mergeTimePeaks", true)->setComment("if time peaks schould be merged");
106 
107  descr.add("totemTimingRecHits", desc);
108 }
109 
TotemTimingRecHitProducer::timingCalibrationTag_
edm::ESInputTag timingCalibrationTag_
Label to timing calibration tag.
Definition: TotemTimingRecHitProducer.cc:54
edm::ESWatcher::check
bool check(const edm::EventSetup &iSetup)
Definition: ESWatcher.h:52
VeryForwardRealGeometryRecord
Event setup record containing the real (actual) geometry information.
Definition: VeryForwardRealGeometryRecord.h:22
edm::DetSetVector
Definition: DetSetVector.h:61
geometry
ESHandle< TrackerGeometry > geometry
Definition: TkLasBeamFitter.cc:200
edm::ESInputTag
Definition: ESInputTag.h:87
edm::ParameterSetDescription::add
ParameterDescriptionBase * add(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:95
TotemTimingRecHitProducerAlgorithm
Definition: TotemTimingRecHitProducerAlgorithm.h:28
edm::ESWatcher< PPSTimingCalibrationRcd >
TotemTimingRecHitProducerAlgorithm::build
void build(const CTPPSGeometry &, const edm::DetSetVector< TotemTimingDigi > &, edm::DetSetVector< TotemTimingRecHit > &)
Definition: TotemTimingRecHitProducerAlgorithm.cc:34
ESHandle.h
edm::EDGetTokenT
Definition: EDGetToken.h:33
edm
HLT enums.
Definition: AlignableModifier.h:19
geometry
Definition: geometry.py:1
TotemTimingDigi.h
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
EDProducer.h
TotemTimingRecHitProducer
TOTEM/PPS timing detectors digi-to-rechits conversion module.
Definition: TotemTimingRecHitProducer.cc:36
TotemTimingRecHitProducer::digiToken_
edm::EDGetTokenT< edm::DetSetVector< TotemTimingDigi > > digiToken_
Input digi collection.
Definition: TotemTimingRecHitProducer.cc:52
TotemTimingRecHit.h
edm::Handle
Definition: AssociativeIterator.h:50
TotemTimingRecHitProducerAlgorithm.h
CTPPSGeometry.h
MakerMacros.h
TotemTimingRecHitProducerAlgorithm::setCalibration
void setCalibration(const PPSTimingCalibration &)
Definition: TotemTimingRecHitProducerAlgorithm.cc:28
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
TotemTimingDigi
Definition: TotemTimingDigi.h:19
TotemTimingDetId.h
edm::ESHandle
Definition: DTSurvey.h:22
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
HLT_2018_cff.InputTag
InputTag
Definition: HLT_2018_cff.py:79016
edm::ParameterSet
Definition: ParameterSet.h:36
Event.h
iEvent
int iEvent
Definition: GenABIO.cc:224
edm::stream::EDProducer
Definition: EDProducer.h:38
PPSTimingCalibrationRcd
EventSetup record for TOTEM/PPS timing calibration information.
Definition: PPSTimingCalibrationRcd.h:14
edm::EventSetup
Definition: EventSetup.h:57
TotemTimingRecHitProducer::TotemTimingRecHitProducer
TotemTimingRecHitProducer(const edm::ParameterSet &)
Definition: TotemTimingRecHitProducer.cc:55
DetSetVector.h
TotemTimingRecHitProducer::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &)
Definition: TotemTimingRecHitProducer.cc:89
get
#define get
VeryForwardRealGeometryRecord.h
TotemTimingRecHitProducer::produce
void produce(edm::Event &, const edm::EventSetup &) override
Definition: TotemTimingRecHitProducer.cc:62
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
Frameworkfwd.h
ESWatcher.h
PPSTimingCalibrationRcd.h
DetSet.h
TotemTimingRecHitProducer::calibWatcher_
edm::ESWatcher< PPSTimingCalibrationRcd > calibWatcher_
Timing calibration parameters watcher.
Definition: TotemTimingRecHitProducer.cc:58
ParameterSet.h
edm::ParameterDescriptionNode::setComment
void setComment(std::string const &value)
Definition: ParameterDescriptionNode.cc:106
TotemTimingRecHitProducer::algo_
TotemTimingRecHitProducerAlgorithm algo_
Digi-to-rechits transformation algorithm.
Definition: TotemTimingRecHitProducer.cc:56
edm::Event
Definition: Event.h:73
StreamID.h
edm::InputTag
Definition: InputTag.h:15