CMS 3D CMS Logo

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

#include <HLTCTPPSLocalTrackFilter.h>

Inheritance diagram for HLTCTPPSLocalTrackFilter:
edm::global::EDFilter<> edm::global::EDFilterBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

bool filter (edm::StreamID, edm::Event &, const edm::EventSetup &) const override
 
 HLTCTPPSLocalTrackFilter (const edm::ParameterSet &)
 
 ~HLTCTPPSLocalTrackFilter () override
 
- Public Member Functions inherited from edm::global::EDFilter<>
 EDFilter ()=default
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsStreamLuminosityBlocks () const final
 
bool wantsStreamRuns () const final
 
- Public Member Functions inherited from edm::global::EDFilterBase
 EDFilterBase ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDFilterBase () 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
 
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)
 
 ~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
 
ESProxyIndex const * esGetTokenIndices (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::vector< ModuleDescription const * > &modules, 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
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

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

Private Attributes

edm::InputTag diamondLocalTrackInputTag_
 
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondLocalTrack > > diamondLocalTrackToken_
 
int maxTracks_
 
int maxTracksPerArm_
 
int maxTracksPerPot_
 
int minTracks_
 
int minTracksPerArm_
 
edm::ParameterSet param_
 
edm::InputTag pixelLocalTrackInputTag_
 
edm::EDGetTokenT< edm::DetSetVector< CTPPSPixelLocalTrack > > pixelLocalTrackToken_
 
edm::InputTag stripLocalTrackInputTag_
 
edm::EDGetTokenT< edm::DetSetVector< TotemRPLocalTrack > > stripLocalTrackToken_
 
bool useDiamond_
 
bool usePixel_
 
bool useStrip_
 

Additional Inherited Members

- Public Types inherited from edm::global::EDFilterBase
typedef EDFilterBase ModuleType
 
- Public Types inherited from edm::ProducerBase
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::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
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 ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
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<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)
 

Detailed Description

Definition at line 29 of file HLTCTPPSLocalTrackFilter.h.

Constructor & Destructor Documentation

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

Definition at line 71 of file HLTCTPPSLocalTrackFilter.cc.

References diamondLocalTrackInputTag_, diamondLocalTrackToken_, edm::InputTag::encode(), LogDebug, maxTracks_, maxTracksPerArm_, maxTracksPerPot_, minTracks_, minTracksPerArm_, pixelLocalTrackInputTag_, pixelLocalTrackToken_, stripLocalTrackInputTag_, stripLocalTrackToken_, useDiamond_, usePixel_, and useStrip_.

71  :
72  pixelLocalTrackInputTag_ (iConfig.getParameter< edm::InputTag > ("pixelLocalTrackInputTag")),
73  stripLocalTrackInputTag_ (iConfig.getParameter< edm::InputTag > ("stripLocalTrackInputTag")),
74  diamondLocalTrackInputTag_ (iConfig.getParameter< edm::InputTag > ("diamondLocalTrackInputTag")),
75  usePixel_ (iConfig.getParameter< bool > ("usePixel")),
76  useStrip_ (iConfig.getParameter< bool > ("useStrip")),
77  useDiamond_ (iConfig.getParameter< bool > ("useDiamond")),
78  minTracks_ (iConfig.getParameter< int > ("minTracks")),
79  minTracksPerArm_ (iConfig.getParameter< int > ("minTracksPerArm")),
80  maxTracks_ (iConfig.getParameter< int > ("maxTracks")),
81  maxTracksPerArm_ (iConfig.getParameter< int > ("maxTracksPerArm")),
82  maxTracksPerPot_ (iConfig.getParameter< int > ("maxTracksPerPot"))
83 {
84  if(usePixel_)
85  pixelLocalTrackToken_ = consumes<edm::DetSetVector<CTPPSPixelLocalTrack>>(pixelLocalTrackInputTag_);
86  if(useStrip_)
87  stripLocalTrackToken_ = consumes<edm::DetSetVector<TotemRPLocalTrack>>(stripLocalTrackInputTag_);
88  if(useDiamond_)
89  diamondLocalTrackToken_ = consumes<edm::DetSetVector<CTPPSDiamondLocalTrack>>(diamondLocalTrackInputTag_);
90 
91  LogDebug("") << "HLTCTPPSLocalTrackFilter: pixelTag/stripTag/diamondTag/usePixel/useStrip/useDiamond/minTracks/minTracksPerArm/maxTracks/maxTracksPerArm/maxTracksPerPot : "
95  << usePixel_ << " "
96  << useStrip_ << " "
97  << useDiamond_ << " "
98  << minTracks_ << " "
99  << minTracksPerArm_ << " "
100  << maxTracks_ << " "
101  << maxTracksPerArm_ << " "
102  << maxTracksPerPot_;
103 }
#define LogDebug(id)
T getParameter(std::string const &) const
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondLocalTrack > > diamondLocalTrackToken_
std::string encode() const
Definition: InputTag.cc:159
edm::EDGetTokenT< edm::DetSetVector< TotemRPLocalTrack > > stripLocalTrackToken_
edm::EDGetTokenT< edm::DetSetVector< CTPPSPixelLocalTrack > > pixelLocalTrackToken_
HLTCTPPSLocalTrackFilter::~HLTCTPPSLocalTrackFilter ( )
overridedefault

Referenced by fillDescriptions().

Member Function Documentation

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

Definition at line 30 of file HLTCTPPSLocalTrackFilter.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), trigger::TriggerTrack, and ~HLTCTPPSLocalTrackFilter().

31 {
33 
34  desc.add<edm::InputTag>("pixelLocalTrackInputTag", edm::InputTag("ctppsPixelLocalTracks"))
35  ->setComment("input tag of the pixel local track collection");
36  desc.add<edm::InputTag>("stripLocalTrackInputTag", edm::InputTag("totemRPLocalTrackFitter"))
37  ->setComment("input tag of the strip local track collection");
38  desc.add<edm::InputTag>("diamondLocalTrackInputTag", edm::InputTag("ctppsDiamondLocalTracks"))
39  ->setComment("input tag of the diamond local track collection");
40 
41  desc.add<bool>("usePixel", true)
42  ->setComment("whether to consider the pixel detectors");
43  desc.add<bool>("useStrip", false)
44  ->setComment("whether to consider the strip detectors");
45  desc.add<bool>("useDiamond", false)
46  ->setComment("whether to consider the diamond detectors");
47 
48  desc.add<int>("minTracks", 2)
49  ->setComment("minimum number of tracks");
50  desc.add<int>("minTracksPerArm", 1)
51  ->setComment("minimum number of tracks per arm of the CTPPS detector");
52 
53  desc.add<int>("maxTracks", -1)
54  ->setComment("maximum number of tracks, if smaller than minTracks it will be ignored");
55  desc.add<int>("maxTracksPerArm", -1)
56  ->setComment("maximum number of tracks per arm of the CTPPS detector, if smaller than minTrackPerArm it will be ignored");
57  desc.add<int>("maxTracksPerPot", -1)
58  ->setComment("maximum number of tracks per roman pot of the CTPPS detector, if negative it will be ignored");
59 
60  desc.add<int>("triggerType", trigger::TriggerTrack);
61 
62  descriptions.add("hltCTPPSLocalTrackFilter", desc);
63  return;
64 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
bool HLTCTPPSLocalTrackFilter::filter ( edm::StreamID  ,
edm::Event iEvent,
const edm::EventSetup iSetup 
) const
override

Definition at line 108 of file HLTCTPPSLocalTrackFilter.cc.

References protons_cff::arm, DEFINE_FWK_MODULE, diamondLocalTrackToken_, edm::Event::getByToken(), triggerObjects_cff::id, maxTracks_, maxTracksPerArm_, maxTracksPerPot_, minTracks_, minTracksPerArm_, pixelLocalTrackToken_, PixelTracks_cff::pixelTracks, stripLocalTrackToken_, HiIsolationCommonParameters_cff::track, useDiamond_, usePixel_, and useStrip_.

109 {
110  int arm45Tracks = 0;
111  int arm56Tracks = 0;
112  std::map<uint32_t, int> tracksPerPot;
113 
114  // Note that there is no matching between the tracks from the several roman pots
115  // so tracks from separate pots might correspond to the same particle.
116  // When the pixels are used in more than one RP (in 2018), then the same situation can
117  // happen within the pixels themselves.
118  if(usePixel_) // Pixels correspond to RP 220 in 2017 data
119  {
121  iEvent.getByToken(pixelLocalTrackToken_, pixelTracks);
122 
123  for(const auto &rpv : (*pixelTracks))
124  {
125  const CTPPSPixelDetId id(rpv.id);
126  if(tracksPerPot.count(rpv.id) == 0)
127  tracksPerPot[rpv.id] = 0;
128 
129  for(auto & track : rpv)
130  {
131  if(track.isValid())
132  {
133  if(id.arm() == 0) ++arm45Tracks;
134  if(id.arm() == 1) ++arm56Tracks;
135  ++tracksPerPot[rpv.id];
136  }
137  }
138  }
139  }
140 
141  if(useStrip_) // Strips correspond to RP 210 in 2017 data
142  {
144  iEvent.getByToken(stripLocalTrackToken_, stripTracks);
145 
146  for(const auto &rpv : (*stripTracks))
147  {
148  const TotemRPDetId id(rpv.id);
149  if(tracksPerPot.count(rpv.id) == 0)
150  tracksPerPot[rpv.id] = 0;
151 
152  for(auto & track : rpv)
153  {
154  if(track.isValid())
155  {
156  if(id.arm() == 0) ++arm45Tracks;
157  if(id.arm() == 1) ++arm56Tracks;
158  ++tracksPerPot[rpv.id];
159  }
160  }
161  }
162  }
163 
164  if(useDiamond_)
165  {
167  iEvent.getByToken(diamondLocalTrackToken_, diamondTracks);
168 
169  for(const auto &rpv : (*diamondTracks))
170  {
171  const CTPPSDiamondDetId id(rpv.id);
172  if(tracksPerPot.count(rpv.id) == 0)
173  tracksPerPot[rpv.id] = 0;
174 
175  for(auto & track : rpv)
176  {
177  if(track.isValid())
178  {
179  if(id.arm() == 0) ++arm45Tracks;
180  if(id.arm() == 1) ++arm56Tracks;
181  ++tracksPerPot[rpv.id];
182  }
183  }
184  }
185  }
186 
187 
188  if(arm45Tracks + arm56Tracks < minTracks_ || arm45Tracks < minTracksPerArm_ || arm56Tracks < minTracksPerArm_)
189  return false;
190 
191  if(maxTracks_ >= minTracks_ && arm45Tracks + arm56Tracks > maxTracks_)
192  return false;
193 
194  if(maxTracksPerArm_ >= minTracksPerArm_ && (arm45Tracks > maxTracksPerArm_ || arm56Tracks > maxTracksPerArm_))
195  return false;
196 
197  if(maxTracksPerPot_ >= 0)
198  {
199  for(auto& pot : tracksPerPot)
200  {
201  if(pot.second > maxTracksPerPot_)
202  {
203  return false;
204  }
205  }
206  }
207 
208  return true;
209 }
Detector ID class for TOTEM Si strip detectors.
Definition: TotemRPDetId.h:30
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondLocalTrack > > diamondLocalTrackToken_
Detector ID class for CTPPS Timing Diamond detectors. Bits [19:31] : Assigend in CTPPSDetId Calss Bit...
edm::EDGetTokenT< edm::DetSetVector< TotemRPLocalTrack > > stripLocalTrackToken_
edm::EDGetTokenT< edm::DetSetVector< CTPPSPixelLocalTrack > > pixelLocalTrackToken_

Member Data Documentation

edm::InputTag HLTCTPPSLocalTrackFilter::diamondLocalTrackInputTag_
private

Definition at line 47 of file HLTCTPPSLocalTrackFilter.h.

Referenced by HLTCTPPSLocalTrackFilter().

edm::EDGetTokenT<edm::DetSetVector<CTPPSDiamondLocalTrack> > HLTCTPPSLocalTrackFilter::diamondLocalTrackToken_
private

Definition at line 48 of file HLTCTPPSLocalTrackFilter.h.

Referenced by filter(), and HLTCTPPSLocalTrackFilter().

int HLTCTPPSLocalTrackFilter::maxTracks_
private

Definition at line 57 of file HLTCTPPSLocalTrackFilter.h.

Referenced by filter(), and HLTCTPPSLocalTrackFilter().

int HLTCTPPSLocalTrackFilter::maxTracksPerArm_
private

Definition at line 58 of file HLTCTPPSLocalTrackFilter.h.

Referenced by filter(), and HLTCTPPSLocalTrackFilter().

int HLTCTPPSLocalTrackFilter::maxTracksPerPot_
private

Definition at line 59 of file HLTCTPPSLocalTrackFilter.h.

Referenced by filter(), and HLTCTPPSLocalTrackFilter().

int HLTCTPPSLocalTrackFilter::minTracks_
private

Definition at line 54 of file HLTCTPPSLocalTrackFilter.h.

Referenced by filter(), and HLTCTPPSLocalTrackFilter().

int HLTCTPPSLocalTrackFilter::minTracksPerArm_
private

Definition at line 55 of file HLTCTPPSLocalTrackFilter.h.

Referenced by filter(), and HLTCTPPSLocalTrackFilter().

edm::ParameterSet HLTCTPPSLocalTrackFilter::param_
private

Definition at line 39 of file HLTCTPPSLocalTrackFilter.h.

edm::InputTag HLTCTPPSLocalTrackFilter::pixelLocalTrackInputTag_
private

Definition at line 41 of file HLTCTPPSLocalTrackFilter.h.

Referenced by HLTCTPPSLocalTrackFilter().

edm::EDGetTokenT<edm::DetSetVector<CTPPSPixelLocalTrack> > HLTCTPPSLocalTrackFilter::pixelLocalTrackToken_
private

Definition at line 42 of file HLTCTPPSLocalTrackFilter.h.

Referenced by filter(), and HLTCTPPSLocalTrackFilter().

edm::InputTag HLTCTPPSLocalTrackFilter::stripLocalTrackInputTag_
private

Definition at line 44 of file HLTCTPPSLocalTrackFilter.h.

Referenced by HLTCTPPSLocalTrackFilter().

edm::EDGetTokenT<edm::DetSetVector<TotemRPLocalTrack> > HLTCTPPSLocalTrackFilter::stripLocalTrackToken_
private

Definition at line 45 of file HLTCTPPSLocalTrackFilter.h.

Referenced by filter(), and HLTCTPPSLocalTrackFilter().

bool HLTCTPPSLocalTrackFilter::useDiamond_
private

Definition at line 52 of file HLTCTPPSLocalTrackFilter.h.

Referenced by filter(), and HLTCTPPSLocalTrackFilter().

bool HLTCTPPSLocalTrackFilter::usePixel_
private

Definition at line 50 of file HLTCTPPSLocalTrackFilter.h.

Referenced by filter(), and HLTCTPPSLocalTrackFilter().

bool HLTCTPPSLocalTrackFilter::useStrip_
private

Definition at line 51 of file HLTCTPPSLocalTrackFilter.h.

Referenced by filter(), and HLTCTPPSLocalTrackFilter().