CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
AlignmentPrescaler Class Reference
Inheritance diagram for AlignmentPrescaler:
edm::one::EDProducer<> edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 AlignmentPrescaler (const edm::ParameterSet &iConfig)
 
void beginJob () override
 
void endJob () override
 
void produce (edm::Event &iEvent, const edm::EventSetup &iSetup) override
 
 ~AlignmentPrescaler () override
 
- Public Member Functions inherited from edm::one::EDProducer<>
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
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
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
std::vector< bool > const & recordProvenanceList () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
TypeLabelList const & typeLabelList () const
 used by the fwk to register the list of products of this module More...
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESResolverIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESResolverIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::array< std::vector< ModuleDescription const *> *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const *> const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProductResolverIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &)
 
- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Member Functions

int layerFromId (const DetId &id, const TrackerTopology *tTopo) const
 

Private Attributes

edm::EDGetTokenT< AliClusterValueMapaliClusterToken_
 
unsigned int detid_
 
TFile * fpresc_
 
float hitPrescFactor_
 
TRandom3 * myrand_
 
float overlapPrescFactor_
 
std::string prescfilename_
 
std::string presctreename_
 
int totnhitspxl_
 
TTree * tpresc_
 
edm::EDGetTokenT< reco::TrackCollectiontracksToken_
 

Additional Inherited Members

- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
template<typename T >
using BranchAliasSetterT = ProductRegistryHelper::BranchAliasSetterT< T >
 
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex > >
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from edm::ProducerBase
template<Transition Tr = Transition::Event>
auto produces (std::string instanceName) noexcept
 declare what type of product will make and with which optional label More...
 
template<Transition B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<BranchType B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
template<Transition Tr = Transition::Event>
auto produces () noexcept
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< Bconsumes (edm::InputTag tag) noexcept
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes ()
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag)
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
void resetItemsToGetFrom (BranchType iType)
 

Detailed Description

Definition at line 38 of file AlignmentPrescaler.cc.

Constructor & Destructor Documentation

◆ AlignmentPrescaler()

AlignmentPrescaler::AlignmentPrescaler ( const edm::ParameterSet iConfig)

Definition at line 68 of file AlignmentPrescaler.cc.

69  : tracksToken_(consumes(iConfig.getParameter<edm::InputTag>("src"))),
71  prescfilename_(iConfig.getParameter<std::string>("PrescFileName")),
72  presctreename_(iConfig.getParameter<std::string>("PrescTreeName")) {
73  // issue the produce<>
74  produces<AliClusterValueMap>();
75  produces<AliTrackTakenClusterValueMap>();
76 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
edm::EDGetTokenT< AliClusterValueMap > aliClusterToken_
edm::EDGetTokenT< reco::TrackCollection > tracksToken_

◆ ~AlignmentPrescaler()

AlignmentPrescaler::~AlignmentPrescaler ( )
overridedefault

Member Function Documentation

◆ beginJob()

void AlignmentPrescaler::beginJob ( )
overridevirtual

Reimplemented from edm::one::EDProducerBase.

Definition at line 80 of file AlignmentPrescaler.cc.

References detid_, fpresc_, hitPrescFactor_, myrand_, overlapPrescFactor_, prescfilename_, presctreename_, and tpresc_.

80  {
81  //
82  edm::LogPrint("AlignmentPrescaler") << "in AlignmentPrescaler::beginJob" << std::flush;
83  fpresc_ = new TFile(prescfilename_.c_str(), "READ");
84  tpresc_ = (TTree*)fpresc_->Get(presctreename_.c_str());
85  tpresc_->BuildIndex("DetId");
86  tpresc_->SetBranchStatus("*", false);
87  tpresc_->SetBranchStatus("DetId", true);
88  tpresc_->SetBranchStatus("PrescaleFactor", true);
89  tpresc_->SetBranchStatus("PrescaleFactorOverlap", true);
90  edm::LogPrint("AlignmentPrescaler") << " Branches activated " << std::flush;
91  detid_ = 0;
92  hitPrescFactor_ = 99.0;
93  overlapPrescFactor_ = 88.0;
94 
95  tpresc_->SetBranchAddress("DetId", &detid_);
96  tpresc_->SetBranchAddress("PrescaleFactor", &hitPrescFactor_);
97  tpresc_->SetBranchAddress("PrescaleFactorOverlap", &overlapPrescFactor_);
98  edm::LogPrint("AlignmentPrescaler") << " addressed " << std::flush;
99  myrand_ = new TRandom3();
100  // myrand_->SetSeed();
101  edm::LogPrint("AlignmentPrescaler") << " ok ";
102 }
Log< level::Warning, true > LogPrint

◆ endJob()

void AlignmentPrescaler::endJob ( void  )
overridevirtual

Reimplemented from edm::one::EDProducerBase.

Definition at line 104 of file AlignmentPrescaler.cc.

References fpresc_, myrand_, and tpresc_.

Referenced by o2olib.O2ORunMgr::executeJob().

104  {
105  delete tpresc_;
106  fpresc_->Close();
107  delete fpresc_;
108  delete myrand_;
109 }

◆ fillDescriptions()

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

Definition at line 274 of file AlignmentPrescaler.cc.

References edm::ConfigurationDescriptions::addWithDefaultLabel(), submitPVResolutionJobs::desc, ProducerED_cfi::InputTag, and AlCaHLTBitMon_QueryRunRegistry::string.

274  {
276  desc.setComment("Prescale Tracker Alignment hits for alignment procedures");
277  desc.add<edm::InputTag>("src", edm::InputTag("generalTracks"));
278  desc.add<edm::InputTag>("assomap", edm::InputTag("OverlapAssoMap"));
279  desc.add<std::string>("PrescFileName", "PrescaleFactors.root");
280  desc.add<std::string>("PrescTreeName", "AlignmentHitMap");
281  descriptions.addWithDefaultLabel(desc);
282 }
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)

◆ layerFromId()

int AlignmentPrescaler::layerFromId ( const DetId id,
const TrackerTopology tTopo 
) const
private

Definition at line 257 of file AlignmentPrescaler.cc.

References PixelSubdetector::PixelBarrel, PixelSubdetector::PixelEndcap, TrackerTopology::pxbLayer(), TrackerTopology::pxfDisk(), TrackerTopology::pxfSide(), StripSubdetector::TEC, TrackerTopology::tecWheel(), StripSubdetector::TIB, TrackerTopology::tibLayer(), StripSubdetector::TID, TrackerTopology::tidSide(), TrackerTopology::tidWheel(), StripSubdetector::TOB, and TrackerTopology::tobLayer().

257  {
258  if (uint32_t(id.subdetId()) == PixelSubdetector::PixelBarrel) {
259  return tTopo->pxbLayer(id);
260  } else if (uint32_t(id.subdetId()) == PixelSubdetector::PixelEndcap) {
261  return tTopo->pxfDisk(id) + (3 * (tTopo->pxfSide(id) - 1));
262  } else if (id.subdetId() == StripSubdetector::TIB) {
263  return tTopo->tibLayer(id);
264  } else if (id.subdetId() == StripSubdetector::TOB) {
265  return tTopo->tobLayer(id);
266  } else if (id.subdetId() == StripSubdetector::TEC) {
267  return tTopo->tecWheel(id) + (9 * (tTopo->pxfSide(id) - 1));
268  } else if (id.subdetId() == StripSubdetector::TID) {
269  return tTopo->tidWheel(id) + (3 * (tTopo->tidSide(id) - 1));
270  }
271  return -1;
272 } //end layerfromId
static constexpr auto TEC
unsigned int tobLayer(const DetId &id) const
unsigned int pxbLayer(const DetId &id) const
unsigned int tidSide(const DetId &id) const
unsigned int tidWheel(const DetId &id) const
unsigned int tecWheel(const DetId &id) const
unsigned int pxfDisk(const DetId &id) const
static constexpr auto TOB
unsigned int pxfSide(const DetId &id) const
static constexpr auto TIB
unsigned int tibLayer(const DetId &id) const
static constexpr auto TID

◆ produce()

void AlignmentPrescaler::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overridevirtual

Implements edm::one::EDProducerBase.

Definition at line 111 of file AlignmentPrescaler.cc.

References aliClusterToken_, SiStripRecHit1D::cluster(), SiStripRecHit2D::cluster(), gather_cfg::cout, nano_mu_digi_cff::float, hitPrescFactor_, iEvent, LogDebug, eostools::move(), myrand_, overlapPrescFactor_, pixelClusterTagInfos_cfi::pixelhit, findQualityFiles::rr, tpresc_, gather_cfg::Tracks, and tracksToken_.

111  {
112  LogDebug("AlignmentPrescaler") << "\n\n#################\n### Starting the AlignmentPrescaler::produce ; Event: "
113  << iEvent.id().run() << ", " << iEvent.id().event() << std::endl;
114 
116  iEvent.getByToken(tracksToken_, Tracks);
117 
118  //take HitAssomap
120 
121  //prepare the output of the ValueMap flagging tracks
122  std::vector<int> trackflags(Tracks->size(), 0);
123 
124  //loop on tracks
125  for (std::vector<reco::Track>::const_iterator ittrk = Tracks->begin(), edtrk = Tracks->end(); ittrk != edtrk;
126  ++ittrk) {
127  //loop on tracking rechits
128  LogDebug("AlignmentPrescaler") << "Loop on hits of track #" << (ittrk - Tracks->begin()) << std::endl;
129  int ntakenhits = 0;
130  bool firstTakenHit = false;
131 
132  for (auto const& hit : ittrk->recHits()) {
133  if (!hit->isValid()) {
134  continue;
135  }
136  uint32_t tmpdetid = hit->geographicalId().rawId();
137  tpresc_->GetEntryWithIndex(tmpdetid);
138 
139  //-------------
140  //decide whether to take this hit or not
141  bool takeit = false;
142  int subdetId = hit->geographicalId().subdetId();
143 
144  //check first if the cluster is also in the overlap asso map
145  bool isOverlapHit = false;
146  // bool first=true;
147  //ugly...
148  const SiPixelRecHit* pixelhit = dynamic_cast<const SiPixelRecHit*>(hit);
149  const SiStripRecHit1D* stripHit1D = dynamic_cast<const SiStripRecHit1D*>(hit);
150  const SiStripRecHit2D* stripHit2D = dynamic_cast<const SiStripRecHit2D*>(hit);
151 
152  AlignmentClusterFlag tmpflag(hit->geographicalId());
153  int stripType = 0;
154  if (subdetId > 2) { // SST case
155  const std::type_info& type = typeid(*hit);
156  if (type == typeid(SiStripRecHit1D))
157  stripType = 1;
158  else if (type == typeid(SiStripRecHit2D))
159  stripType = 2;
160  else
161  stripType = 3;
162 
163  if (stripType == 1) {
164  // const SiStripRecHit1D* stripHit1D = dynamic_cast<const SiStripRecHit1D*>(hit);
165 
166  if (stripHit1D != nullptr) {
167  SiStripRecHit1D::ClusterRef stripclust(stripHit1D->cluster());
168  tmpflag = InValMap[stripclust];
169  tmpflag.SetDetId(hit->geographicalId());
170  if (tmpflag.isOverlap())
171  isOverlapHit = true;
172  LogDebug("AlignmentPrescaler")
173  << "~*~*~* Prescale (1D) for module " << tmpflag.detId().rawId() << "("
174  << InValMap[stripclust].detId().rawId() << ") is " << hitPrescFactor_ << std::flush;
175  if (tmpflag.isOverlap())
176  LogDebug("AlignmentPrescaler") << " (it is Overlap)";
177  } //end if striphit1D!=0
178  } else if (stripType == 2) {
179  //const SiStripRecHit2D* stripHit2D = dynamic_cast<const SiStripRecHit2D*>(hit);
180  if (stripHit2D != nullptr) {
181  SiStripRecHit2D::ClusterRef stripclust(stripHit2D->cluster());
182  tmpflag = InValMap[stripclust];
183  tmpflag.SetDetId(hit->geographicalId());
184  if (tmpflag.isOverlap())
185  isOverlapHit = true;
186  LogDebug("AlignmentPrescaler")
187  << "~*~*~* Prescale (2D) for module " << tmpflag.detId().rawId() << "("
188  << InValMap[stripclust].detId().rawId() << ") is " << hitPrescFactor_ << std::flush;
189  if (tmpflag.isOverlap())
190  LogDebug("AlignmentPrescaler") << " (it is Overlap)" << endl;
191  } //end if striphit2D!=0
192  }
193  } //end if is a strip hit
194  else {
195  // const SiPixelRecHit* pixelhit= dynamic_cast<const SiPixelRecHit*>(hit);
196  if (pixelhit != nullptr) {
197  SiPixelClusterRefNew pixclust(pixelhit->cluster());
198  tmpflag = InValMap[pixclust];
199  tmpflag.SetDetId(hit->geographicalId());
200  if (tmpflag.isOverlap())
201  isOverlapHit = true;
202  }
203  } //end else is a pixel hit
204  // tmpflag.SetDetId(hit->geographicalId());
205 
206  if (isOverlapHit) {
207  LogDebug("AlignmentPrescaler") << " DetId=" << tmpdetid << " is Overlap! " << flush;
208  takeit = (float(myrand_->Rndm()) <= overlapPrescFactor_);
209  }
210  if (!takeit) {
211  float rr = float(myrand_->Rndm());
212  takeit = (rr <= hitPrescFactor_);
213  }
214  if (takeit) { //HIT TAKEN !
215  LogDebug("AlignmentPrescaler") << " DetId=" << tmpdetid << " taken!" << flush;
216  tmpflag.SetTakenFlag();
217 
218  if (subdetId > 2) {
219  if (stripType == 1) {
220  SiStripRecHit1D::ClusterRef stripclust(stripHit1D->cluster());
221  InValMap[stripclust] = tmpflag; //.SetTakenFlag();
222  } else if (stripType == 2) {
223  SiStripRecHit1D::ClusterRef stripclust(stripHit2D->cluster());
224  InValMap[stripclust] = tmpflag; //.SetTakenFlag();
225  } else
226  std::cout << "Unknown type of strip hit" << std::endl;
227  } else {
228  SiPixelClusterRefNew pixclust(pixelhit->cluster());
229  InValMap[pixclust] = tmpflag; //.SetTakenFlag();
230  }
231 
232  if (!firstTakenHit) {
233  firstTakenHit = true;
234  LogDebug("AlignmentPrescaler") << "Index of the track iterator is " << ittrk - Tracks->begin();
235  }
236  ntakenhits++;
237  } //end if take this hit
238  } //end loop on RecHits
239  trackflags[ittrk - Tracks->begin()] = ntakenhits;
240  } //end loop on tracks
241 
242  //save the asso map, tracks...
243  // prepare output
244  auto OutVM = std::make_unique<AliClusterValueMap>();
245  *OutVM = InValMap;
246 
247  iEvent.put(std::move(OutVM));
248 
249  auto trkVM = std::make_unique<AliTrackTakenClusterValueMap>();
250  AliTrackTakenClusterValueMap::Filler trkmapfiller(*trkVM);
251  trkmapfiller.insert(Tracks, trackflags.begin(), trackflags.end());
252  trkmapfiller.fill();
253  iEvent.put(std::move(trkVM));
254 
255 } //end produce
ClusterRef cluster() const
int iEvent
Definition: GenABIO.cc:224
edm::EDGetTokenT< AliClusterValueMap > aliClusterToken_
edm::EDGetTokenT< reco::TrackCollection > tracksToken_
ClusterRef cluster() const
def move(src, dest)
Definition: eostools.py:511
Our base class.
Definition: SiPixelRecHit.h:23
#define LogDebug(id)

Member Data Documentation

◆ aliClusterToken_

edm::EDGetTokenT<AliClusterValueMap> AlignmentPrescaler::aliClusterToken_
private

Definition at line 50 of file AlignmentPrescaler.cc.

Referenced by produce().

◆ detid_

unsigned int AlignmentPrescaler::detid_
private

Definition at line 61 of file AlignmentPrescaler.cc.

Referenced by beginJob().

◆ fpresc_

TFile* AlignmentPrescaler::fpresc_
private

Definition at line 55 of file AlignmentPrescaler.cc.

Referenced by beginJob(), and endJob().

◆ hitPrescFactor_

float AlignmentPrescaler::hitPrescFactor_
private

Definition at line 62 of file AlignmentPrescaler.cc.

Referenced by beginJob(), and produce().

◆ myrand_

TRandom3* AlignmentPrescaler::myrand_
private

Definition at line 57 of file AlignmentPrescaler.cc.

Referenced by beginJob(), endJob(), and produce().

◆ overlapPrescFactor_

float AlignmentPrescaler::overlapPrescFactor_
private

Definition at line 62 of file AlignmentPrescaler.cc.

Referenced by beginJob(), and produce().

◆ prescfilename_

std::string AlignmentPrescaler::prescfilename_
private

Definition at line 52 of file AlignmentPrescaler.cc.

Referenced by beginJob().

◆ presctreename_

std::string AlignmentPrescaler::presctreename_
private

Definition at line 53 of file AlignmentPrescaler.cc.

Referenced by beginJob().

◆ totnhitspxl_

int AlignmentPrescaler::totnhitspxl_
private

Definition at line 63 of file AlignmentPrescaler.cc.

◆ tpresc_

TTree* AlignmentPrescaler::tpresc_
private

Definition at line 56 of file AlignmentPrescaler.cc.

Referenced by beginJob(), endJob(), and produce().

◆ tracksToken_

edm::EDGetTokenT<reco::TrackCollection> AlignmentPrescaler::tracksToken_
private

Definition at line 49 of file AlignmentPrescaler.cc.

Referenced by produce().