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
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

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
 
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecordtkGeomToken
 
bool useCalibration
 
bool usePixel
 
bool useStrip
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
using CacheTypes = CacheContexts< T... >
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T... >
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Detailed Description

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

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

Definition at line 67 of file FastTrackDeDxProducer.cc.

Constructor & Destructor Documentation

◆ FastTrackDeDxProducer()

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

Definition at line 139 of file FastTrackDeDxProducer.cc.

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

References edm::BeginRun, 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 117 of file FastTrackDeDxProducer.cc.

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

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 245 of file FastTrackDeDxProducer.cc.

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

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 201 of file FastTrackDeDxProducer.cc.

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

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, jetUpdater_cfi::sort, HLT_FULL_cff::track, and duplicaterechits_cfi::trackCollection.

Member Data Documentation

◆ calibGains

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

Definition at line 98 of file FastTrackDeDxProducer.cc.

Referenced by beginRun().

◆ convertFromGeV2MeV

bool FastTrackDeDxProducer::convertFromGeV2MeV
private

Definition at line 109 of file FastTrackDeDxProducer.cc.

Referenced by FastTrackDeDxProducer(), and processHit().

◆ m_calibrationPath

std::string FastTrackDeDxProducer::m_calibrationPath
private

Definition at line 96 of file FastTrackDeDxProducer.cc.

Referenced by beginRun(), and FastTrackDeDxProducer().

◆ m_estimator

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

Definition at line 87 of file FastTrackDeDxProducer.cc.

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

◆ m_off

unsigned int FastTrackDeDxProducer::m_off
private

Definition at line 99 of file FastTrackDeDxProducer.cc.

Referenced by beginRun().

◆ m_tracksTag

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

Definition at line 89 of file FastTrackDeDxProducer.cc.

Referenced by FastTrackDeDxProducer(), and produce().

◆ MaxNrStrips

unsigned int FastTrackDeDxProducer::MaxNrStrips
private

Definition at line 94 of file FastTrackDeDxProducer.cc.

◆ meVperADCPixel

float FastTrackDeDxProducer::meVperADCPixel
private

Definition at line 91 of file FastTrackDeDxProducer.cc.

Referenced by FastTrackDeDxProducer().

◆ meVperADCStrip

float FastTrackDeDxProducer::meVperADCStrip
private

Definition at line 92 of file FastTrackDeDxProducer.cc.

Referenced by FastTrackDeDxProducer().

◆ nothick

bool FastTrackDeDxProducer::nothick
private

Definition at line 110 of file FastTrackDeDxProducer.cc.

Referenced by FastTrackDeDxProducer(), and processHit().

◆ shapetest

bool FastTrackDeDxProducer::shapetest
private

Definition at line 108 of file FastTrackDeDxProducer.cc.

Referenced by FastTrackDeDxProducer(), and processHit().

◆ simHit2RecHitMapToken

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

Definition at line 102 of file FastTrackDeDxProducer.cc.

◆ simHitsToken

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

Definition at line 101 of file FastTrackDeDxProducer.cc.

◆ tkGeomToken

const edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> FastTrackDeDxProducer::tkGeomToken
private

Definition at line 103 of file FastTrackDeDxProducer.cc.

◆ useCalibration

bool FastTrackDeDxProducer::useCalibration
private

Definition at line 107 of file FastTrackDeDxProducer.cc.

Referenced by beginRun(), and FastTrackDeDxProducer().

◆ usePixel

bool FastTrackDeDxProducer::usePixel
private

Definition at line 105 of file FastTrackDeDxProducer.cc.

Referenced by FastTrackDeDxProducer(), and processHit().

◆ useStrip

bool FastTrackDeDxProducer::useStrip
private

Definition at line 106 of file FastTrackDeDxProducer.cc.

Referenced by FastTrackDeDxProducer(), and processHit().

FastTrackDeDxProducer::useCalibration
bool useCalibration
Definition: FastTrackDeDxProducer.cc:107
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11724
edm::Handle::product
T const * product() const
Definition: Handle.h:70
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89301
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
FastTrackDeDxProducer::tkGeomToken
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > tkGeomToken
Definition: FastTrackDeDxProducer.cc:103
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
h
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
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:101
edm::Ref< TrackCollection >
FastTrackDeDxProducer::meVperADCStrip
float meVperADCStrip
Definition: FastTrackDeDxProducer.cc:92
GeomDetEnumerators::PixelBarrel
Definition: GeomDetEnumerators.h:11
FastTrackDeDxProducer::m_calibrationPath
std::string m_calibrationPath
Definition: FastTrackDeDxProducer.cc:96
h
edm::EventSetup::get
T get() const
Definition: EventSetup.h:87
FastTrackDeDxProducer::m_tracksTag
edm::EDGetTokenT< reco::TrackCollection > m_tracksTag
Definition: FastTrackDeDxProducer.cc:89
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
FastTrackDeDxProducer::nothick
bool nothick
Definition: FastTrackDeDxProducer.cc:110
TrackerDigiGeometryRecord
Definition: TrackerDigiGeometryRecord.h:16
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:105
ALCARECOTkAlJpsiMuMu_cff.charge
charge
Definition: ALCARECOTkAlJpsiMuMu_cff.py:47
duplicaterechits_cfi.trackCollection
trackCollection
Definition: duplicaterechits_cfi.py:4
reco::DeDxHit
Definition: DeDxHit.h:11
jetUpdater_cfi.sort
sort
Definition: jetUpdater_cfi.py:29
trigObjTnPSource_cfi.filler
filler
Definition: trigObjTnPSource_cfi.py:21
FastTrackDeDxProducer::m_off
unsigned int m_off
Definition: FastTrackDeDxProducer.cc:99
FastTrackDeDxProducer::simHit2RecHitMapToken
edm::EDGetTokenT< FastTrackerRecHitRefCollection > simHit2RecHitMapToken
Definition: FastTrackDeDxProducer.cc:102
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:245
DeDxTools::makeCalibrationMap
void makeCalibrationMap(const std::string &m_calibrationPath, const TrackerGeometry &tkGeom, std::vector< std::vector< float >> &calibGains, const unsigned int &m_off)
BTagLikeDeDxDiscriminator
Definition: BTagLikeDeDxDiscriminator.h:8
FastTrackDeDxProducer::convertFromGeV2MeV
bool convertFromGeV2MeV
Definition: FastTrackDeDxProducer.cc:109
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:245
FastTrackDeDxProducer::shapetest
bool shapetest
Definition: FastTrackDeDxProducer.cc:108
FastTrackDeDxProducer::m_estimator
std::unique_ptr< BaseDeDxEstimator > m_estimator
Definition: FastTrackDeDxProducer.cc:87
FastTrackDeDxProducer::calibGains
std::vector< std::vector< float > > calibGains
Definition: FastTrackDeDxProducer.cc:98
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:91
FastTrackDeDxProducer::useStrip
bool useStrip
Definition: FastTrackDeDxProducer.cc:106
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