CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
reco::modules::CosmicTrackSplitter Class Reference
Inheritance diagram for reco::modules::CosmicTrackSplitter:
edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper

Public Member Functions

 CosmicTrackSplitter (const edm::ParameterSet &iConfig)
 
virtual void produce (edm::Event &iEvent, const edm::EventSetup &iSetup)
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
virtual ~EDProducer ()
 
- Public Member Functions inherited from edm::ProducerBase
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
boost::function< void(const
BranchDescription &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 

Private Member Functions

TrackCandidate makeCandidate (const reco::Track &tk, std::vector< TrackingRecHit * >::iterator hitsBegin, std::vector< TrackingRecHit * >::iterator hitsEnd)
 

Private Attributes

std::vector< uint32_t > detsToIgnore_
 
double dXYcut_
 
double dZcut_
 
bool excludePixelHits_
 
size_t minimumHits_
 
bool replaceWithInactiveHits_
 
bool stripAllInvalidHits_
 
bool stripBackInvalidHits_
 
bool stripFrontInvalidHits_
 
edm::ESHandle< TrackerGeometrytheGeometry
 
edm::ESHandle< MagneticFieldtheMagField
 
edm::InputTag tjTag_
 
int totalTracks_
 
edm::InputTag tracks_
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
typedef WorkerT< EDProducerWorkerType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDProducer
CurrentProcessingContext const * currentContext () const
 
- Protected Member Functions inherited from edm::ProducerBase
template<class TProducer , class TMethod >
void callWhenNewProductsRegistered (TProducer *iProd, TMethod iMethod)
 

Detailed Description

Definition at line 86 of file CosmicTrackSplitter.cc.

Constructor & Destructor Documentation

reco::modules::CosmicTrackSplitter::CosmicTrackSplitter ( const edm::ParameterSet iConfig)

Definition at line 116 of file CosmicTrackSplitter.cc.

References detsToIgnore_, edm::hlt::Exception, LogDebug, replaceWithInactiveHits_, python.multivaluedict::sort(), stripAllInvalidHits_, and totalTracks_.

116  :
117  tracks_(iConfig.getParameter<edm::InputTag>("tracks")),
118  tjTag_(iConfig.getParameter<edm::InputTag>("tjTkAssociationMapTag") ),
119  minimumHits_(iConfig.getParameter<uint32_t>("minimumHits")),
120  replaceWithInactiveHits_(iConfig.getParameter<bool>("replaceWithInactiveHits")),
121  stripFrontInvalidHits_(iConfig.getParameter<bool>("stripFrontInvalidHits")),
122  stripBackInvalidHits_( iConfig.getParameter<bool>("stripBackInvalidHits") ),
123  stripAllInvalidHits_( iConfig.getParameter<bool>("stripAllInvalidHits") ),
124  excludePixelHits_( iConfig.getParameter<bool>("excludePixelHits") ),
125  dZcut_(iConfig.getParameter<double>("dzCut") ),
126  dXYcut_(iConfig.getParameter<double>("dxyCut") ),
127  detsToIgnore_( iConfig.getParameter<std::vector<uint32_t> >("detsToIgnore") )
128  {
129  // sanity check
131  throw cms::Exception("Configuration") << "Inconsistent Configuration: you can't set both 'stripAllInvalidHits' and 'replaceWithInactiveHits' to true\n";
132  }
133 
134  LogDebug("CosmicTrackSplitter") << "sanity check";
135 
136  // sort detids to ignore
137  std::sort(detsToIgnore_.begin(), detsToIgnore_.end());
138 
139  totalTracks_ = 0;
140 
141  // issue the produce<>
142  produces<TrackCandidateCollection>();
143  }
#define LogDebug(id)
T getParameter(std::string const &) const

Member Function Documentation

TrackCandidate reco::modules::CosmicTrackSplitter::makeCandidate ( const reco::Track tk,
std::vector< TrackingRecHit * >::iterator  hitsBegin,
std::vector< TrackingRecHit * >::iterator  hitsEnd 
)
private

Definition at line 385 of file CosmicTrackSplitter.cc.

References alongMomentum, anyDirection, edm::hlt::Exception, reco::Track::innerDetId(), reco::Track::innerPosition(), trajectoryStateTransform::innerStateOnSurface(), LogDebug, LogTrace, reco::TrackBase::momentum(), mergeVDriftHistosByStation::name, reco::Track::outerDetId(), reco::Track::outerPosition(), trajectoryStateTransform::outerStateOnSurface(), trajectoryStateTransform::persistentState(), edm::OwnVector< T, P >::push_back(), edm::OwnVector< T, P >::reserve(), reco::Track::seedDirection(), reco::Track::seedRef(), evf::utils::state, theGeometry, and theMagField.

Referenced by produce().

385  {
386 
387  LogDebug("CosmicTrackSplitter") << "Making a candidate!";
388 
389 
392  if ( pdir == anyDirection ) throw cms::Exception("UnimplementedFeature") << "Cannot work with tracks that have 'anyDirecton' \n";
393  //if ( (pdir == alongMomentum) == ( tk.p() >= tk.outerP() ) ) {
394  if ( (pdir == alongMomentum) == ( (tk.outerPosition()-tk.innerPosition()).Dot(tk.momentum()) >= 0 ) ) {
395  // use inner state
397  state = trajectoryStateTransform::persistentState( originalTsosIn, DetId(tk.innerDetId()) );
398  } else {
399  // use outer state
401  state = trajectoryStateTransform::persistentState( originalTsosOut, DetId(tk.outerDetId()) );
402  }
403 
404  TrajectorySeed seed(state, TrackCandidate::RecHitContainer(), pdir);
405 
407  ownHits.reserve(hitsEnd - hitsBegin);
408  for ( ; hitsBegin != hitsEnd; ++hitsBegin) { ownHits.push_back( *hitsBegin ); }
409 
410  TrackCandidate cand(ownHits, seed, state, tk.seedRef());
411 
412 
413  LogDebug("CosmicTrackSplitter") << " dumping the hits now: ";
414  for (TrackCandidate::range hitR = cand.recHits(); hitR.first != hitR.second; ++hitR.first) {
415  LogTrace("CosmicTrackSplitter") << " hit detid = " << hitR.first->geographicalId().rawId() <<
416  ", type = " << typeid(*hitR.first).name();
417  }
418 
419  return cand;
420  }
#define LogDebug(id)
const Vector & momentum() const
track momentum vector
Definition: TrackBase.h:150
TrajectoryStateOnSurface innerStateOnSurface(const reco::Track &tk, const TrackingGeometry &geom, const MagneticField *field)
PTrajectoryStateOnDet persistentState(const TrajectoryStateOnSurface &ts, unsigned int detid)
edm::ESHandle< TrackerGeometry > theGeometry
PropagationDirection
std::pair< const_iterator, const_iterator > range
const math::XYZPoint & outerPosition() const
position of the outermost hit
Definition: Track.h:47
const math::XYZPoint & innerPosition() const
position of the innermost hit
Definition: Track.h:42
void push_back(D *&d)
Definition: OwnVector.h:273
unsigned int outerDetId() const
DetId of the detector on which surface the outermost state is located.
Definition: Track.h:59
edm::ESHandle< MagneticField > theMagField
#define LogTrace(id)
Definition: DetId.h:20
edm::RefToBase< TrajectorySeed > seedRef() const
Definition: Track.h:112
TrajectoryStateOnSurface outerStateOnSurface(const reco::Track &tk, const TrackingGeometry &geom, const MagneticField *field)
char state
Definition: procUtils.cc:75
PropagationDirection seedDirection() const
direction of how the hits were sorted in the original seed
Definition: Track.h:105
unsigned int innerDetId() const
DetId of the detector on which surface the innermost state is located.
Definition: Track.h:61
void reserve(size_t)
Definition: OwnVector.h:267
void reco::modules::CosmicTrackSplitter::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
virtual

Implements edm::EDProducer.

Definition at line 146 of file CosmicTrackSplitter.cc.

References begin, edm::HandleBase::clear(), TrackingRecHit::clone(), DetId::det(), cond::rpcobgas::detid, detsToIgnore_, dXYcut_, dZcut_, end, excludePixelHits_, funct::false, TrackingRecHit::geographicalId(), edm::EventSetup::get(), edm::Event::getByLabel(), i, TrackingRecHit::inactive, TrackingRecHit::isValid(), TrackingRecHit::localPosition(), LogDebug, mag(), makeCandidate(), Trajectory::measurements(), minimumHits_, convertSQLitetoXML_cfg::output, pos, edm::Event::put(), DetId::rawId(), reco::Track::recHitsBegin(), reco::Track::recHitsEnd(), replaceWithInactiveHits_, stripAllInvalidHits_, stripBackInvalidHits_, stripFrontInvalidHits_, DetId::subdetId(), groupFilesInBlocks::temp, theGeometry, theMagField, tjTag_, totalTracks_, DetId::Tracker, testEve_cfg::tracks, tracks_, TrackingRecHit::type(), and v.

147  {
148  LogDebug("CosmicTrackSplitter") << "IN THE SPLITTER!!!!!";
149 
150  // read with View, so we can read also a TrackRefVector
152  iEvent.getByLabel(tracks_, tracks);
153 
154  // also need trajectories ...
155  // Retrieve trajectories and tracks from the event
156  // -> merely skip if collection is empty
158  iEvent.getByLabel( tjTag_, m_TrajTracksMap );
159 
160  // read from EventSetup
163 
164  // prepare output collection
165  std::auto_ptr<TrackCandidateCollection> output(new TrackCandidateCollection());
166  output->reserve(tracks->size());
167 
168  // working area and tools
169  std::vector<TrackingRecHit *> hits;
170 
171  // Form pairs of trajectories and tracks
172  //ConstTrajTrackPairCollection trajTracks;
173  LogDebug("CosmicTrackSplitter") << "size of map: " << m_TrajTracksMap->size();
174  int HITTOSPLITFROM = 0;
175  for ( TrajTrackAssociationCollection::const_iterator iPair = m_TrajTracksMap->begin(); iPair != m_TrajTracksMap->end(); iPair++ ){
176  const Trajectory* trajFromMap = &(*(*iPair).key);
177  const reco::Track* trackFromMap = &(*(*iPair).val);
178 
179  // loop to find the hit to split from (by taking dot product of pT and transverse position
180  std::vector<TrajectoryMeasurement> measurements = trajFromMap->measurements();
181  int totalNumberOfHits = measurements.size();
182  int numberOfHits = 0;
183  double previousDotProduct = 0;
184  for (trackingRecHit_iterator ith = trackFromMap->recHitsBegin(), edh = trackFromMap->recHitsEnd(); ith != edh; ++ith) {
185 
186  GlobalVector stateMomentum = measurements[numberOfHits].forwardPredictedState().globalMomentum();
187  GlobalPoint statePosition = measurements[numberOfHits].forwardPredictedState().globalPosition();
188  double dotProduct = stateMomentum.x()*statePosition.x() + stateMomentum.y()*statePosition.y();
189  if ( dotProduct*previousDotProduct < 0 ){
190  //found hit to split from...
191  HITTOSPLITFROM = numberOfHits;
192  }
193 
194  previousDotProduct = dotProduct;
195  numberOfHits++;
196 
197  }
198  LogDebug("CosmicTrackSplitter") << "number of rechits: " << numberOfHits;
199 
200  // check if the trajectories and rechits are in reverse order...
201  trackingRecHit_iterator bIt = trackFromMap->recHitsBegin();
202  trackingRecHit_iterator fIt = trackFromMap->recHitsEnd() - 1;
203  const TrackingRecHit* bHit = bIt->get();
204  const TrackingRecHit* fHit = fIt->get();
205  // hit type valid = 0, missing = 1, inactive = 2, bad = 3
206  if( bHit->type() != 0 || bHit->isValid() != 1){
207  //loop over hits forwards until first Valid hit is found
209  for( ihit = trackFromMap->recHitsBegin();
210  ihit != trackFromMap->recHitsEnd(); ++ihit){
211  const TrackingRecHit* iHit = ihit->get();
212  if( iHit->type() == 0 && iHit->isValid() == 1){
213  bHit = iHit;
214  break;
215  }
216  }
217  }
218  DetId bdetid = bHit->geographicalId();
219  GlobalPoint bPosHit = theGeometry->idToDetUnit( bdetid)->surface().
220  toGlobal(bHit->localPosition());
221  if( fHit->type() != 0 || fHit->isValid() != 1){
222  //loop over hits backwards until first Valid hit is found
224  for( ihitf = trackFromMap->recHitsEnd()-1;
225  ihitf != trackFromMap->recHitsBegin(); --ihitf){
226  const TrackingRecHit* iHit = ihitf->get();
227  if( iHit->type() == 0 && iHit->isValid() == 1){
228  fHit = iHit;
229  break;
230  }
231  }
232  }
233  DetId fdetid = fHit->geographicalId();
234  GlobalPoint fPosHit = theGeometry->
235  idToDetUnit( fdetid )->surface().toGlobal(fHit->localPosition());
236  GlobalPoint bPosState = measurements[0].updatedState().globalPosition();
237  GlobalPoint fPosState = measurements[measurements.size()-1].
238  updatedState().globalPosition();
239  bool trajReversedFlag = false;
240  /*
241  DetId bdetid = bHit->geographicalId();
242  DetId fdetid = fHit->geographicalId();
243  GlobalPoint bPosHit = theGeometry->idToDetUnit( bdetid )->surface().toGlobal(bHit->localPosition());
244  GlobalPoint fPosHit = theGeometry->idToDetUnit( fdetid )->surface().toGlobal(fHit->localPosition());
245  GlobalPoint bPosState = measurements[0].updatedState().globalPosition();
246  GlobalPoint fPosState = measurements[measurements.size() - 1].updatedState().globalPosition();
247  bool trajReversedFlag = false;
248  */
249  if (( (bPosHit - bPosState).mag() > (bPosHit - fPosState).mag() ) && ( (fPosHit - fPosState).mag() > (fPosHit - bPosState).mag() ) ){
250  trajReversedFlag = true;
251  }
252  if (trajReversedFlag){ int temp = HITTOSPLITFROM; HITTOSPLITFROM = totalNumberOfHits - temp; }
253  }
254 
255  totalTracks_ = totalTracks_ + tracks->size();
256  // loop on tracks
257  for (std::vector<reco::Track>::const_iterator itt = tracks->begin(), edt = tracks->end(); itt != edt; ++itt) {
258  hits.clear(); // extra safety
259 
260  LogDebug("CosmicTrackSplitter") << "ntracks: " << tracks->size();
261 
262  // try to find distance of closest approach
263  GlobalPoint v( itt->vx(), itt->vy(), itt->vz() );
264 
265  //checks on impact parameter
266  bool continueWithTrack = true;
267  if (fabs(v.z()) > dZcut_) continueWithTrack = false;
268  if (v.perp() > dXYcut_) continueWithTrack = false;
269  if (continueWithTrack == false) return;
270 
271  // LOOP TWICE, ONCE FOR TOP AND ONCE FOR BOTTOM
272  for (int i = 0; i < 2; ++i){
273  hits.clear(); // extra safety
274  LogDebug("CosmicTrackSplitter") << " loop on hits of track #" << (itt - tracks->begin());
275  int usedHitCtr = 0;
276  int hitCtr = 0;
277  for (trackingRecHit_iterator ith = itt->recHitsBegin(), edh = itt->recHitsEnd(); ith != edh; ++ith) {
278  //hitCtr++;
279  const TrackingRecHit * hit = ith->get(); // ith is an iterator on edm::Ref to rechit
280  LogDebug("CosmicTrackSplitter") << " hit number " << (ith - itt->recHitsBegin());
281  // let's look at valid hits
282  if (hit->isValid()) {
283  LogDebug("CosmicTrackSplitter") << " valid, detid = " << hit->geographicalId().rawId();
284  DetId detid = hit->geographicalId();
285 
286  if (detid.det() == DetId::Tracker) { // check for tracker hits
287  LogDebug("CosmicTrackSplitter") << " valid, tracker ";
288  bool verdict = false;
289 
290  //trying to get the global position of the hit
291  //const GeomDetUnit* geomDetUnit = theGeometry->idToDetUnit( detid ).;
292 
293  const GlobalPoint pos = theGeometry->idToDetUnit( detid )->surface().toGlobal(hit->localPosition());
294  LogDebug("CosmicTrackSplitter") << "hit pos: " << pos << ", dca pos: " << v;
295 
296  // top half
297  if ((i == 0)&&(hitCtr < HITTOSPLITFROM)){
298  verdict = true;
299  LogDebug("CosmicTrackSplitter") << "tophalf";
300  }
301  // bottom half
302  if ((i == 1)&&(hitCtr >= HITTOSPLITFROM)){
303  verdict = true;
304  LogDebug("CosmicTrackSplitter") << "bottomhalf";
305  }
306 
307  // if the hit is good, check again at module level
308  if ( verdict && std::binary_search(detsToIgnore_.begin(), detsToIgnore_.end(), detid.rawId())) {
309  verdict = false;
310  }
311 
312  // if hit is good check to make sure that we are keeping pixel hits
313  if ( excludePixelHits_){
314  if ((detid.det() == DetId::Tracker)&&((detid.subdetId() == 1)||(detid.subdetId() == 2))) { // check for pixel hits
315  verdict = false;
316  }
317  }
318 
319  LogDebug("CosmicTrackSplitter") << " verdict after module list: " << (verdict ? "ok" : "no");
320  if (verdict == true) {
321  // just copy the hit
322  hits.push_back(hit->clone());
323  usedHitCtr++;
324  }
325  else {
326  // still, if replaceWithInactiveHits is true we have to put a new hit
328  hits.push_back(new InvalidTrackingRecHit(detid, TrackingRecHit::inactive));
329  }
330  }
331  }
332  else { // just copy non tracker hits
333  hits.push_back(hit->clone());
334  }
335  }
336  else {
337  if (!stripAllInvalidHits_) {
338  hits.push_back(hit->clone());
339  }
340  } // is valid hit
341  LogDebug("CosmicTrackSplitter") << " end of hit " << (ith - itt->recHitsBegin());
342  hitCtr++;
343  } // loop on hits
344  LogDebug("CosmicTrackSplitter") << " end of loop on hits of track #" << (itt - tracks->begin());
345 
346  std::vector<TrackingRecHit *>::iterator begin = hits.begin(), end = hits.end();
347 
348  LogDebug("CosmicTrackSplitter") << " selected " << hits.size() << " hits ";
349 
350  // strip invalid hits at the beginning
352  while ( (begin != end) && ( (*begin)->isValid() == false ) ) ++begin;
353  }
354 
355  LogDebug("CosmicTrackSplitter") << " after front stripping we have " << (end - begin) << " hits ";
356 
357  // strip invalid hits at the end
358  if (stripBackInvalidHits_ && (begin != end)) {
359  --end;
360  while ( (begin != end) && ( (*end)->isValid() == false ) ) --end;
361  ++end;
362  }
363 
364  LogDebug("CosmicTrackSplitter") << " after back stripping we have " << (end - begin) << " hits ";
365 
366  // if we still have some hits
367  //if ((end - begin) >= int(minimumHits_)) {
368  if ( usedHitCtr >= int(minimumHits_)) {
369  output->push_back( makeCandidate ( *itt, begin, end ) );
370  LogDebug("CosmicTrackSplitter") << "we made a candidate of " << hits.size() << " hits!";
371  }
372  // now delete the hits not used by the candidate
373  for (begin = hits.begin(), end = hits.end(); begin != end; ++begin) {
374  if (*begin) delete *begin;
375  }
376  LogDebug("CosmicTrackSplitter") << "loop: " << i << " has " << usedHitCtr << " active hits and " << hits.size() << " total hits...";
377  hits.clear();
378  } // loop twice for top and bottom
379  } // loop on tracks
380  LogDebug("CosmicTrackSplitter") << "totalTracks_ = " << totalTracks_;
381  iEvent.put(output);
382  }
#define LogDebug(id)
int i
Definition: DBlmapReader.cc:9
TrackCandidate makeCandidate(const reco::Track &tk, std::vector< TrackingRecHit * >::iterator hitsBegin, std::vector< TrackingRecHit * >::iterator hitsEnd)
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
std::vector< TrackCandidate > TrackCandidateCollection
T y() const
Definition: PV3DBase.h:62
Type type() const
edm::ESHandle< TrackerGeometry > theGeometry
uint32_t rawId() const
get the raw id
Definition: DetId.h:45
DataContainer const & measurements() const
Definition: Trajectory.h:203
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:85
edm::ESHandle< MagneticField > theMagField
#define end
Definition: vmac.h:38
trackingRecHit_iterator recHitsBegin() const
Iterator to first hit on the track.
Definition: Track.h:63
int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:39
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356
virtual TrackingRecHit * clone() const =0
Definition: DetId.h:20
tuple tracks
Definition: testEve_cfg.py:39
const T & get() const
Definition: EventSetup.h:55
bool isValid() const
#define begin
Definition: vmac.h:31
DetId geographicalId() const
Detector det() const
get the detector field from this detid
Definition: DetId.h:37
T x() const
Definition: PV3DBase.h:61
virtual LocalPoint localPosition() const =0
mathSSE::Vec4< T > v
trackingRecHit_iterator recHitsEnd() const
Iterator to last hit on the track.
Definition: Track.h:65

Member Data Documentation

std::vector<uint32_t> reco::modules::CosmicTrackSplitter::detsToIgnore_
private

Definition at line 106 of file CosmicTrackSplitter.cc.

Referenced by CosmicTrackSplitter(), and produce().

double reco::modules::CosmicTrackSplitter::dXYcut_
private

Definition at line 104 of file CosmicTrackSplitter.cc.

Referenced by produce().

double reco::modules::CosmicTrackSplitter::dZcut_
private

Definition at line 103 of file CosmicTrackSplitter.cc.

Referenced by produce().

bool reco::modules::CosmicTrackSplitter::excludePixelHits_
private

Definition at line 101 of file CosmicTrackSplitter.cc.

Referenced by produce().

size_t reco::modules::CosmicTrackSplitter::minimumHits_
private

Definition at line 95 of file CosmicTrackSplitter.cc.

Referenced by produce().

bool reco::modules::CosmicTrackSplitter::replaceWithInactiveHits_
private

Definition at line 97 of file CosmicTrackSplitter.cc.

Referenced by CosmicTrackSplitter(), and produce().

bool reco::modules::CosmicTrackSplitter::stripAllInvalidHits_
private

Definition at line 100 of file CosmicTrackSplitter.cc.

Referenced by CosmicTrackSplitter(), and produce().

bool reco::modules::CosmicTrackSplitter::stripBackInvalidHits_
private

Definition at line 99 of file CosmicTrackSplitter.cc.

Referenced by produce().

bool reco::modules::CosmicTrackSplitter::stripFrontInvalidHits_
private

Definition at line 98 of file CosmicTrackSplitter.cc.

Referenced by produce().

edm::ESHandle<TrackerGeometry> reco::modules::CosmicTrackSplitter::theGeometry
private

Definition at line 108 of file CosmicTrackSplitter.cc.

Referenced by makeCandidate(), and produce().

edm::ESHandle<MagneticField> reco::modules::CosmicTrackSplitter::theMagField
private

Definition at line 109 of file CosmicTrackSplitter.cc.

Referenced by makeCandidate(), and produce().

edm::InputTag reco::modules::CosmicTrackSplitter::tjTag_
private

Definition at line 93 of file CosmicTrackSplitter.cc.

Referenced by produce().

int reco::modules::CosmicTrackSplitter::totalTracks_
private

Definition at line 94 of file CosmicTrackSplitter.cc.

Referenced by CosmicTrackSplitter(), and produce().

edm::InputTag reco::modules::CosmicTrackSplitter::tracks_
private

Definition at line 92 of file CosmicTrackSplitter.cc.

Referenced by produce().