CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
FastTrackDeDxProducer Class Reference

#include <RecoTracker/FastTrackDeDxProducer/src/FastTrackDeDxProducer.cc>

Inheritance diagram for FastTrackDeDxProducer:
edm::stream::EDProducer<>

Public Member Functions

 FastTrackDeDxProducer (const edm::ParameterSet &)
 
 ~FastTrackDeDxProducer () override=default
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 

Private Member Functions

void beginRun (edm::Run const &run, const edm::EventSetup &) override
 
void makeCalibrationMap (const TrackerGeometry &tkGeom)
 
void processHit (const FastTrackerRecHit &recHit, float trackMomentum, float &cosine, reco::DeDxHitCollection &dedxHits, int &NClusterSaturating)
 
void produce (edm::Event &, const edm::EventSetup &) override
 

Private Attributes

std::vector< std::vector< float > > calibGains
 
bool convertFromGeV2MeV
 
std::string m_calibrationPath
 
std::unique_ptr< BaseDeDxEstimatorm_estimator
 
unsigned int m_off
 
edm::EDGetTokenT< reco::TrackCollectionm_tracksTag
 
unsigned int MaxNrStrips
 
float meVperADCPixel
 
float meVperADCStrip
 
bool nothick
 
bool shapetest
 
edm::EDGetTokenT< FastTrackerRecHitRefCollectionsimHit2RecHitMapToken
 
edm::EDGetTokenT< edm::PSimHitContainersimHitsToken
 
bool useCalibration
 
bool usePixel
 
bool useStrip
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Detailed Description

Description: <one line="" class="" summary>="">

Implementation: <Notes on="" implementation>="">

Definition at line 66 of file FastTrackDeDxProducer.cc.

Constructor & Destructor Documentation

◆ FastTrackDeDxProducer()

FastTrackDeDxProducer::FastTrackDeDxProducer ( const edm::ParameterSet iConfig)
explicit

Definition at line 137 of file FastTrackDeDxProducer.cc.

138  : simHitsToken(consumes<edm::PSimHitContainer>(iConfig.getParameter<edm::InputTag>("simHits"))),
140  consumes<FastTrackerRecHitRefCollection>(iConfig.getParameter<edm::InputTag>("simHit2RecHitMap"))) {
141  produces<ValueMap<DeDxData>>();
142 
143  string estimatorName = iConfig.getParameter<string>("estimator");
144  if (estimatorName == "median")
145  m_estimator = std::unique_ptr<BaseDeDxEstimator>(new MedianDeDxEstimator(iConfig));
146  else if (estimatorName == "generic")
147  m_estimator = std::unique_ptr<BaseDeDxEstimator>(new GenericAverageDeDxEstimator(iConfig));
148  else if (estimatorName == "truncated")
149  m_estimator = std::unique_ptr<BaseDeDxEstimator>(new TruncatedAverageDeDxEstimator(iConfig));
150  //else if(estimatorName == "unbinnedFit") m_estimator = std::unique_ptr<BaseDeDxEstimator> (new UnbinnedFitDeDxEstimator(iConfig));//estimator used in FullSimVersion
151  else if (estimatorName == "productDiscrim")
152  m_estimator = std::unique_ptr<BaseDeDxEstimator>(new ProductDeDxDiscriminator(iConfig));
153  else if (estimatorName == "btagDiscrim")
154  m_estimator = std::unique_ptr<BaseDeDxEstimator>(new BTagLikeDeDxDiscriminator(iConfig));
155  else if (estimatorName == "smirnovDiscrim")
156  m_estimator = std::unique_ptr<BaseDeDxEstimator>(new SmirnovDeDxDiscriminator(iConfig));
157  else if (estimatorName == "asmirnovDiscrim")
158  m_estimator = std::unique_ptr<BaseDeDxEstimator>(new ASmirnovDeDxDiscriminator(iConfig));
159  else
160  throw cms::Exception("fastsim::SimplifiedGeometry::FastTrackDeDxProducer.cc") << " estimator name does not exist";
161 
162  //Commented for now, might be used in the future
163  // MaxNrStrips = iConfig.getUntrackedParameter<unsigned>("maxNrStrips" , 255);
164 
165  m_tracksTag = consumes<reco::TrackCollection>(iConfig.getParameter<edm::InputTag>("tracks"));
166 
167  usePixel = iConfig.getParameter<bool>("UsePixel");
168  useStrip = iConfig.getParameter<bool>("UseStrip");
169  meVperADCPixel = iConfig.getParameter<double>("MeVperADCPixel");
170  meVperADCStrip = iConfig.getParameter<double>("MeVperADCStrip");
171 
172  shapetest = iConfig.getParameter<bool>("ShapeTest");
173  useCalibration = iConfig.getParameter<bool>("UseCalibration");
174  m_calibrationPath = iConfig.getParameter<string>("calibrationPath");
175 
176  convertFromGeV2MeV = iConfig.getParameter<bool>("convertFromGeV2MeV");
177  nothick = iConfig.getParameter<bool>("nothick");
178 
179  if (!usePixel && !useStrip)
180  throw cms::Exception("fastsim::SimplifiedGeometry::FastTrackDeDxProducer.cc")
181  << " neither pixel hits nor strips hits will be used to compute de/dx";
182 }

References convertFromGeV2MeV, Exception, edm::ParameterSet::getParameter(), m_calibrationPath, m_estimator, m_tracksTag, meVperADCPixel, meVperADCStrip, nothick, shapetest, useCalibration, usePixel, and useStrip.

◆ ~FastTrackDeDxProducer()

FastTrackDeDxProducer::~FastTrackDeDxProducer ( )
overridedefault

Member Function Documentation

◆ beginRun()

void FastTrackDeDxProducer::beginRun ( edm::Run const &  run,
const edm::EventSetup iSetup 
)
overrideprivate

◆ fillDescriptions()

void FastTrackDeDxProducer::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 115 of file FastTrackDeDxProducer.cc.

115  {
117  desc.add<string>("estimator", "generic");
118  desc.add<edm::InputTag>("tracks", edm::InputTag("generalTracks"));
119  desc.add<bool>("UsePixel", false);
120  desc.add<bool>("UseStrip", true);
121  desc.add<double>("MeVperADCStrip", 3.61e-06 * 265);
122  desc.add<double>("MeVperADCPixel", 3.61e-06);
123  desc.add<bool>("ShapeTest", true);
124  desc.add<bool>("UseCalibration", false);
125  desc.add<string>("calibrationPath", "");
126  desc.add<string>("Reccord", "SiStripDeDxMip_3D_Rcd");
127  desc.add<string>("ProbabilityMode", "Accumulation");
128  desc.add<double>("fraction", 0.4);
129  desc.add<double>("exponent", -2.0);
130  desc.add<bool>("convertFromGeV2MeV", true);
131  desc.add<bool>("nothick", false);
132  desc.add<edm::InputTag>("simHits");
133  desc.add<edm::InputTag>("simHit2RecHitMap");
134  descriptions.add("FastTrackDeDxProducer", desc);
135 }

References edm::ConfigurationDescriptions::add(), submitPVResolutionJobs::desc, and HLT_FULL_cff::InputTag.

◆ makeCalibrationMap()

void FastTrackDeDxProducer::makeCalibrationMap ( const TrackerGeometry tkGeom)
private

◆ processHit()

void FastTrackDeDxProducer::processHit ( const FastTrackerRecHit recHit,
float  trackMomentum,
float &  cosine,
reco::DeDxHitCollection dedxHits,
int &  NClusterSaturating 
)
private

Definition at line 241 of file FastTrackDeDxProducer.cc.

245  {
246  if (!recHit.isValid())
247  return;
248 
249  auto const& thit = static_cast<BaseTrackerRecHit const&>(recHit);
250  if (!thit.isValid())
251  return;
252  if (!thit.hasPositionAndError())
253  return;
254 
255  if (recHit.isPixel()) {
256  if (!usePixel)
257  return;
258 
259  auto& detUnit = *(recHit.detUnit());
260  float pathLen = detUnit.surface().bounds().thickness() / fabs(cosine);
261  if (nothick)
262  pathLen = 1.0;
263  float charge = recHit.energyLoss() / pathLen;
264  if (convertFromGeV2MeV)
265  charge *= 1000;
266  dedxHits.push_back(DeDxHit(charge, trackMomentum, pathLen, recHit.geographicalId()));
267  } else if (!recHit.isPixel()) { // && !recHit.isMatched()){//check what recHit.isMatched is doing
268  if (!useStrip)
269  return;
270  auto& detUnit = *(recHit.detUnit());
271  float pathLen = detUnit.surface().bounds().thickness() / fabs(cosine);
272  if (nothick)
273  pathLen = 1.0;
274  float dedxOfRecHit = recHit.energyLoss() / pathLen;
275  if (convertFromGeV2MeV)
276  dedxOfRecHit *= 1000;
277  if (!shapetest) {
278  dedxHits.push_back(DeDxHit(dedxOfRecHit, trackMomentum, pathLen, recHit.geographicalId()));
279  }
280  }
281 }

References ALCARECOTkAlJpsiMuMu_cff::charge, convertFromGeV2MeV, nothick, rpcPointValidation_cfi::recHit, shapetest, reco::btau::trackMomentum, usePixel, and useStrip.

Referenced by produce().

◆ produce()

void FastTrackDeDxProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 197 of file FastTrackDeDxProducer.cc.

197  {
198  auto trackDeDxEstimateAssociation = std::make_unique<ValueMap<DeDxData>>();
199  ValueMap<DeDxData>::Filler filler(*trackDeDxEstimateAssociation);
200 
201  edm::Handle<reco::TrackCollection> trackCollectionHandle;
202  iEvent.getByToken(m_tracksTag, trackCollectionHandle);
203  const auto& trackCollection = *trackCollectionHandle;
204  std::vector<DeDxData> dedxEstimate(trackCollection.size());
205 
206  for (unsigned int j = 0; j < trackCollection.size(); j++) {
207  const reco::TrackRef track = reco::TrackRef(trackCollectionHandle.product(), j);
208 
209  int NClusterSaturating = 0;
210  DeDxHitCollection dedxHits;
211 
212  auto const& trajParams = track->extra()->trajParams();
213  assert(trajParams.size() == track->recHitsSize());
214 
215  auto hb = track->recHitsBegin();
216  dedxHits.reserve(track->recHitsSize() / 2);
217 
218  for (unsigned int h = 0; h < track->recHitsSize(); h++) {
219  const FastTrackerRecHit& recHit = static_cast<const FastTrackerRecHit&>(*(*(hb + h)));
220  if (!recHit.isValid())
221  continue; //FastTrackerRecHit recHit = *(hb+h);
222  auto trackDirection = trajParams[h].direction();
223  float cosine = trackDirection.z() / trackDirection.mag();
224  processHit(recHit, track->p(), cosine, dedxHits, NClusterSaturating);
225  }
226 
227  sort(dedxHits.begin(), dedxHits.end(), less<DeDxHit>());
228  std::pair<float, float> val_and_error = m_estimator->dedx(dedxHits);
229  //WARNING: Since the dEdX Error is not properly computed for the moment
230  //It was decided to store the number of saturating cluster in that dataformat
231  val_and_error.second = NClusterSaturating;
232  dedxEstimate[j] = DeDxData(val_and_error.first, val_and_error.second, dedxHits.size());
233  }
234 
235  filler.insert(trackCollectionHandle, dedxEstimate.begin(), dedxEstimate.end());
236  // fill the association map and put it into the event
237  filler.fill();
238  iEvent.put(std::move(trackDeDxEstimateAssociation));
239 }

References cms::cuda::assert(), trigObjTnPSource_cfi::filler, h, hcalSimParameters_cfi::hb, iEvent, dqmiolumiharvest::j, m_estimator, m_tracksTag, eostools::move(), processHit(), edm::Handle< T >::product(), rpcPointValidation_cfi::recHit, HLT_FULL_cff::track, and duplicaterechits_cfi::trackCollection.

Member Data Documentation

◆ calibGains

std::vector<std::vector<float> > FastTrackDeDxProducer::calibGains
private

Definition at line 97 of file FastTrackDeDxProducer.cc.

Referenced by beginRun().

◆ convertFromGeV2MeV

bool FastTrackDeDxProducer::convertFromGeV2MeV
private

Definition at line 107 of file FastTrackDeDxProducer.cc.

Referenced by FastTrackDeDxProducer(), and processHit().

◆ m_calibrationPath

std::string FastTrackDeDxProducer::m_calibrationPath
private

Definition at line 95 of file FastTrackDeDxProducer.cc.

Referenced by beginRun(), and FastTrackDeDxProducer().

◆ m_estimator

std::unique_ptr<BaseDeDxEstimator> FastTrackDeDxProducer::m_estimator
private

Definition at line 86 of file FastTrackDeDxProducer.cc.

Referenced by beginRun(), FastTrackDeDxProducer(), and produce().

◆ m_off

unsigned int FastTrackDeDxProducer::m_off
private

Definition at line 98 of file FastTrackDeDxProducer.cc.

Referenced by beginRun().

◆ m_tracksTag

edm::EDGetTokenT<reco::TrackCollection> FastTrackDeDxProducer::m_tracksTag
private

Definition at line 88 of file FastTrackDeDxProducer.cc.

Referenced by FastTrackDeDxProducer(), and produce().

◆ MaxNrStrips

unsigned int FastTrackDeDxProducer::MaxNrStrips
private

Definition at line 93 of file FastTrackDeDxProducer.cc.

◆ meVperADCPixel

float FastTrackDeDxProducer::meVperADCPixel
private

Definition at line 90 of file FastTrackDeDxProducer.cc.

Referenced by FastTrackDeDxProducer().

◆ meVperADCStrip

float FastTrackDeDxProducer::meVperADCStrip
private

Definition at line 91 of file FastTrackDeDxProducer.cc.

Referenced by FastTrackDeDxProducer().

◆ nothick

bool FastTrackDeDxProducer::nothick
private

Definition at line 108 of file FastTrackDeDxProducer.cc.

Referenced by FastTrackDeDxProducer(), and processHit().

◆ shapetest

bool FastTrackDeDxProducer::shapetest
private

Definition at line 106 of file FastTrackDeDxProducer.cc.

Referenced by FastTrackDeDxProducer(), and processHit().

◆ simHit2RecHitMapToken

edm::EDGetTokenT<FastTrackerRecHitRefCollection> FastTrackDeDxProducer::simHit2RecHitMapToken
private

Definition at line 101 of file FastTrackDeDxProducer.cc.

◆ simHitsToken

edm::EDGetTokenT<edm::PSimHitContainer> FastTrackDeDxProducer::simHitsToken
private

Definition at line 100 of file FastTrackDeDxProducer.cc.

◆ useCalibration

bool FastTrackDeDxProducer::useCalibration
private

Definition at line 105 of file FastTrackDeDxProducer.cc.

Referenced by beginRun(), and FastTrackDeDxProducer().

◆ usePixel

bool FastTrackDeDxProducer::usePixel
private

Definition at line 103 of file FastTrackDeDxProducer.cc.

Referenced by FastTrackDeDxProducer(), and processHit().

◆ useStrip

bool FastTrackDeDxProducer::useStrip
private

Definition at line 104 of file FastTrackDeDxProducer.cc.

Referenced by FastTrackDeDxProducer(), and processHit().

FastTrackDeDxProducer::useCalibration
bool useCalibration
Definition: FastTrackDeDxProducer.cc:105
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11779
edm::Handle::product
T const * product() const
Definition: Handle.h:70
DeDxTools::makeCalibrationMap
void makeCalibrationMap(const std::string &m_calibrationPath, const TrackerGeometry &tkGeom, std::vector< std::vector< float > > &calibGains, const unsigned int &m_off)
Definition: DeDxTools.cc:252
h
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
Definition: L1TUtmAlgorithmRcd.h:4
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89353
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
reco::DeDxHitCollection
std::vector< DeDxHit > DeDxHitCollection
Definition: DeDxHit.h:41
cms::cuda::assert
assert(be >=bs)
FastTrackerRecHit
Definition: FastTrackerRecHit.h:40
GenericAverageDeDxEstimator
Definition: GenericAverageDeDxEstimator.h:8
MedianDeDxEstimator
Definition: MedianDeDxEstimator.h:8
edm::Handle< reco::TrackCollection >
rpcPointValidation_cfi.recHit
recHit
Definition: rpcPointValidation_cfi.py:7
FastTrackDeDxProducer::simHitsToken
edm::EDGetTokenT< edm::PSimHitContainer > simHitsToken
Definition: FastTrackDeDxProducer.cc:100
edm::Ref< TrackCollection >
FastTrackDeDxProducer::meVperADCStrip
float meVperADCStrip
Definition: FastTrackDeDxProducer.cc:91
GeomDetEnumerators::PixelBarrel
Definition: GeomDetEnumerators.h:11
FastTrackDeDxProducer::m_calibrationPath
std::string m_calibrationPath
Definition: FastTrackDeDxProducer.cc:95
h
edm::EventSetup::get
T get() const
Definition: EventSetup.h:80
FastTrackDeDxProducer::m_tracksTag
edm::EDGetTokenT< reco::TrackCollection > m_tracksTag
Definition: FastTrackDeDxProducer.cc:88
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
FastTrackDeDxProducer::nothick
bool nothick
Definition: FastTrackDeDxProducer.cc:108
TrackerDigiGeometryRecord
Definition: TrackerDigiGeometryRecord.h:15
edm::ESHandle< TrackerGeometry >
reco::btau::trackMomentum
Definition: TaggingVariable.h:41
reco::TrackRef
edm::Ref< TrackCollection > TrackRef
persistent reference to a Track
Definition: TrackFwd.h:20
FastTrackDeDxProducer::usePixel
bool usePixel
Definition: FastTrackDeDxProducer.cc:103
ALCARECOTkAlJpsiMuMu_cff.charge
charge
Definition: ALCARECOTkAlJpsiMuMu_cff.py:47
duplicaterechits_cfi.trackCollection
trackCollection
Definition: duplicaterechits_cfi.py:4
reco::DeDxHit
Definition: DeDxHit.h:11
trigObjTnPSource_cfi.filler
filler
Definition: trigObjTnPSource_cfi.py:21
FastTrackDeDxProducer::m_off
unsigned int m_off
Definition: FastTrackDeDxProducer.cc:98
FastTrackDeDxProducer::simHit2RecHitMapToken
edm::EDGetTokenT< FastTrackerRecHitRefCollection > simHit2RecHitMapToken
Definition: FastTrackDeDxProducer.cc:101
iEvent
int iEvent
Definition: GenABIO.cc:224
FastTrackDeDxProducer::processHit
void processHit(const FastTrackerRecHit &recHit, float trackMomentum, float &cosine, reco::DeDxHitCollection &dedxHits, int &NClusterSaturating)
Definition: FastTrackDeDxProducer.cc:241
BTagLikeDeDxDiscriminator
Definition: BTagLikeDeDxDiscriminator.h:8
FastTrackDeDxProducer::convertFromGeV2MeV
bool convertFromGeV2MeV
Definition: FastTrackDeDxProducer.cc:107
get
#define get
hcalSimParameters_cfi.hb
hb
Definition: hcalSimParameters_cfi.py:60
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
eostools.move
def move(src, dest)
Definition: eostools.py:511
TruncatedAverageDeDxEstimator
Definition: TruncatedAverageDeDxEstimator.h:9
writedatasetfile.run
run
Definition: writedatasetfile.py:27
Exception
Definition: hltDiff.cc:246
FastTrackDeDxProducer::shapetest
bool shapetest
Definition: FastTrackDeDxProducer.cc:106
FastTrackDeDxProducer::m_estimator
std::unique_ptr< BaseDeDxEstimator > m_estimator
Definition: FastTrackDeDxProducer.cc:86
FastTrackDeDxProducer::calibGains
std::vector< std::vector< float > > calibGains
Definition: FastTrackDeDxProducer.cc:97
ASmirnovDeDxDiscriminator
Definition: ASmirnovDeDxDiscriminator.h:8
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
FastTrackDeDxProducer::meVperADCPixel
float meVperADCPixel
Definition: FastTrackDeDxProducer.cc:90
FastTrackDeDxProducer::useStrip
bool useStrip
Definition: FastTrackDeDxProducer.cc:104
edm::helper::Filler
Definition: ValueMap.h:22
reco::DeDxData
Definition: DeDxData.h:8
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
SmirnovDeDxDiscriminator
Definition: SmirnovDeDxDiscriminator.h:8
TrackerGeometry::offsetDU
unsigned int offsetDU(SubDetector sid) const
Definition: TrackerGeometry.h:72
edm::InputTag
Definition: InputTag.h:15
ProductDeDxDiscriminator
Definition: ProductDeDxDiscriminator.h:8