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 Attributes
TrackerSeedValidator Class Reference

#include <TrackerSeedValidator.h>

Inheritance diagram for TrackerSeedValidator:
edm::EDAnalyzer MultiTrackValidatorBase edm::EDConsumerBase

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &)
 Method called once per event. More...
 
void beginRun (edm::Run const &, edm::EventSetup const &)
 Method called before the event loop. More...
 
void endRun (edm::Run const &, edm::EventSetup const &)
 Method called at the end of the event loop. More...
 
 TrackerSeedValidator (const edm::ParameterSet &pset)
 Constructor. More...
 
virtual ~TrackerSeedValidator ()
 Destructor. More...
 
- Public Member Functions inherited from edm::EDAnalyzer
 EDAnalyzer ()
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 
- Public Member Functions inherited from edm::EDConsumerBase
 EDConsumerBase ()
 
ProductHolderIndex indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndex > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndex > &) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Attributes

std::string builderName
 
CosmicTrackingParticleSelector cosmictpSelector
 
std::string dirName_
 
MTVHistoProducerAlgohistoProducerAlgo_
 
bool runStandalone
 
edm::ESHandle
< TransientTrackingRecHitBuilder
theTTRHBuilder
 
TrackingParticleSelector tpSelector
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
typedef WorkerT< EDAnalyzerWorkerType
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- Protected Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
CurrentProcessingContext const * currentContext () const
 
- 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 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)
 
- Protected Member Functions inherited from MultiTrackValidatorBase
 MultiTrackValidatorBase (const edm::ParameterSet &pset)
 Constructor. More...
 
virtual ~MultiTrackValidatorBase ()
 Destructor. More...
 
- Protected Attributes inherited from MultiTrackValidatorBase
std::vector< const
TrackAssociatorBase * > 
associator
 
std::vector< std::string > associators
 
edm::InputTag bsSrc
 
DQMStoredbe_
 
bool ignoremissingtkcollection_
 
std::vector< edm::InputTaglabel
 
edm::InputTag label_pileupinfo
 
edm::InputTag label_tp_effic
 
edm::InputTag label_tp_fake
 
edm::InputTag label_tv
 
edm::InputTag m_dEdx1Tag
 
edm::InputTag m_dEdx2Tag
 
std::string out
 
std::string parametersDefiner
 
std::string sim
 
bool skipHistoFit
 
edm::ESHandle< MagneticFieldtheMF
 

Detailed Description

Class that prodecs histrograms to validate Track Reconstruction performances

Date:
2012/09/23 20:20:25
Revision:
1.5
Author
cerati

Definition at line 20 of file TrackerSeedValidator.h.

Constructor & Destructor Documentation

TrackerSeedValidator::TrackerSeedValidator ( const edm::ParameterSet pset)

Constructor.

Definition at line 36 of file TrackerSeedValidator.cc.

References builderName, MultiTrackValidatorBase::dbe_, dirName_, reco::get(), edm::ParameterSet::getParameter(), histoProducerAlgo_, runStandalone, AlCaHLTBitMon_QueryRunRegistry::string, and tpSelector.

37  //theExtractor = IsoDepositExtractorFactory::get()->create( extractorName, extractorPSet);
38 
39  ParameterSet psetForHistoProducerAlgo = pset.getParameter<ParameterSet>("histoProducerAlgoBlock");
40  string histoProducerAlgoName = psetForHistoProducerAlgo.getParameter<string>("ComponentName");
41  histoProducerAlgo_ = MTVHistoProducerAlgoFactory::get()->create(histoProducerAlgoName ,psetForHistoProducerAlgo);
42  histoProducerAlgo_->setDQMStore(dbe_);
43 
44  dirName_ = pset.getParameter<std::string>("dirName");
45 
46  tpSelector = TrackingParticleSelector(pset.getParameter<double>("ptMinTP"),
47  pset.getParameter<double>("minRapidityTP"),
48  pset.getParameter<double>("maxRapidityTP"),
49  pset.getParameter<double>("tipTP"),
50  pset.getParameter<double>("lipTP"),
51  pset.getParameter<int>("minHitTP"),
52  pset.getParameter<bool>("signalOnlyTP"),
53  pset.getParameter<bool>("chargedOnlyTP"),
54  pset.getParameter<bool>("stableOnlyTP"),
55  pset.getParameter<std::vector<int> >("pdgIdTP"));
56 
57  runStandalone = pset.getParameter<bool>("runStandalone");
58 
59  builderName = pset.getParameter<std::string>("TTRHBuilder");
60 }
T getParameter(std::string const &) const
MultiTrackValidatorBase(const edm::ParameterSet &pset)
Constructor.
TrackingParticleSelector tpSelector
SingleObjectSelector< TrackingParticleCollection,::TrackingParticleSelector > TrackingParticleSelector
MTVHistoProducerAlgo * histoProducerAlgo_
T get(const Candidate &c)
Definition: component.h:56
TrackerSeedValidator::~TrackerSeedValidator ( )
virtual

Destructor.

Definition at line 62 of file TrackerSeedValidator.cc.

References histoProducerAlgo_.

62 {delete histoProducerAlgo_;}
MTVHistoProducerAlgo * histoProducerAlgo_

Member Function Documentation

void TrackerSeedValidator::analyze ( const edm::Event event,
const edm::EventSetup setup 
)
virtual

Method called once per event.

Implements edm::EDAnalyzer.

Definition at line 118 of file TrackerSeedValidator.cc.

References MultiTrackValidatorBase::associator, MultiTrackValidatorBase::associators, asciidump::at, MultiTrackValidatorBase::bsSrc, EncodedEventId::bunchCrossing(), LocalTrajectoryParameters::charge(), funct::cos(), alignCSCRings::e, edm::AssociationMap< Tag >::end(), EncodedEventId::event(), TrackingParticle::eventId(), MTVHistoProducerAlgo::fill_generic_recoTrack_histos(), MTVHistoProducerAlgo::fill_generic_simTrack_histos(), MTVHistoProducerAlgo::fill_recoAssociated_simTrack_histos(), MTVHistoProducerAlgo::fill_ResoAndPull_recoTrack_histos(), MTVHistoProducerAlgo::fill_simAssociated_recoTrack_histos(), MTVHistoProducerAlgo::fill_trackBased_histos(), edm::AssociationMap< Tag >::find(), first, TrajectoryStateOnSurface::freeState(), PerigeeConversions::ftsToPerigeeError(), edm::EventSetup::get(), PileupSummaryInfo::getPU_NumInteractions(), histoProducerAlgo_, i, j, MultiTrackValidatorBase::label, MultiTrackValidatorBase::label_pileupinfo, MultiTrackValidatorBase::label_tp_effic, MultiTrackValidatorBase::label_tp_fake, MultiTrackValidatorBase::label_tv, LogTrace, PTrajectoryStateOnDet::parameters(), MultiTrackValidatorBase::parametersDefiner, reco::BeamSpot::position(), edm::Handle< T >::product(), edm::ESHandle< class >::product(), TrajectorySeed::recHits(), reco::TrackBase::setHitPattern(), funct::sin(), findQualityFiles::size, mathSSE::sqrt(), TrajectorySeed::startingState(), evf::utils::state, MultiTrackValidatorBase::theMF, theTTRHBuilder, tpSelector, trajectoryStateTransform::transientState(), w(), and cms::Exception::what().

118  {
119 
120  edm::LogInfo("TrackValidator") << "\n====================================================" << "\n"
121  << "Analyzing new event" << "\n"
122  << "====================================================\n" << "\n";
123 
124  edm::ESHandle<ParametersDefinerForTP> parametersDefinerTP;
125  setup.get<TrackAssociatorRecord>().get(parametersDefiner,parametersDefinerTP);
126 
127  edm::Handle<TrackingParticleCollection> TPCollectionHeff ;
128  event.getByLabel(label_tp_effic,TPCollectionHeff);
129  const TrackingParticleCollection tPCeff = *(TPCollectionHeff.product());
130 
131  edm::Handle<TrackingParticleCollection> TPCollectionHfake ;
132  event.getByLabel(label_tp_fake,TPCollectionHfake);
133  const TrackingParticleCollection tPCfake = *(TPCollectionHfake.product());
134 
135  if (tPCeff.size()==0) {edm::LogInfo("TrackValidator") << "TP Collection for efficiency studies has size = 0! Skipping Event." ; return;}
136  if (tPCfake.size()==0) {edm::LogInfo("TrackValidator") << "TP Collection for fake rate studies has size = 0! Skipping Event." ; return;}
137 
138  edm::Handle<reco::BeamSpot> recoBeamSpotHandle;
139  event.getByLabel(bsSrc,recoBeamSpotHandle);
140  reco::BeamSpot bs = *recoBeamSpotHandle;
141 
143  event.getByLabel(label_pileupinfo,puinfoH);
144  PileupSummaryInfo puinfo;
145 
146  for (unsigned int puinfo_ite=0;puinfo_ite<(*puinfoH).size();++puinfo_ite){
147  if ((*puinfoH)[puinfo_ite].getBunchCrossing()==0){
148  puinfo=(*puinfoH)[puinfo_ite];
149  break;
150  }
151  }
152 
154  event.getByLabel(label_tv,tvH);
155  TrackingVertexCollection tv = *tvH;
156 
157  int w=0;
158  for (unsigned int ww=0;ww<associators.size();ww++){
159  for (unsigned int www=0;www<label.size();www++){
160  edm::LogVerbatim("TrackValidator") << "Analyzing "
161  << label[www].process()<<":"
162  << label[www].label()<<":"
163  << label[www].instance()<<" with "
164  << associators[ww].c_str() <<"\n";
165  //
166  //get collections from the event
167  //
168  edm::Handle<edm::View<TrajectorySeed> > seedCollection;
169  event.getByLabel(label[www], seedCollection);
170  if (seedCollection->size()==0) {
171  edm::LogInfo("TrackValidator") << "SeedCollection size = 0!" ;
172  continue;
173  }
174 
175  //associate seeds
176  LogTrace("TrackValidator") << "Calling associateRecoToSim method" << "\n";
177  reco::RecoToSimCollectionSeed recSimColl=associator[ww]->associateRecoToSim(seedCollection,
178  TPCollectionHfake,
179  &event,&setup);
180  LogTrace("TrackValidator") << "Calling associateSimToReco method" << "\n";
181  reco::SimToRecoCollectionSeed simRecColl=associator[ww]->associateSimToReco(seedCollection,
182  TPCollectionHeff,
183  &event,&setup);
184 
185  //
186  //fill simulation histograms
187  //compute number of seeds per eta interval
188  //
189  edm::LogVerbatim("TrackValidator") << "\n# of TrackingParticles: " << tPCeff.size() << "\n";
190  int ats(0); //This counter counts the number of simTracks that are "associated" to recoTracks
191  int st(0); //This counter counts the number of simulated tracks passing the MTV selection (i.e. tpSelector(tp) )
192  unsigned sts(0); //This counter counts the number of simTracks surviving the bunchcrossing cut
193  unsigned asts(0); //This counter counts the number of simTracks that are "associated" to recoTracks surviving the bunchcrossing cut
194  for (TrackingParticleCollection::size_type i=0; i<tPCeff.size(); i++){
195  TrackingParticleRef tp(TPCollectionHeff, i);
196 
197  if (tp->charge()==0) continue;
198 
199  if(! tpSelector(*tp)) continue;
200 
201  TrackingParticle::Vector momentumTP = tp->momentum();
202  TrackingParticle::Point vertexTP = tp->vertex();
203  //Calcualte the impact parameters w.r.t. PCA
204  TrackingParticle::Vector momentum = parametersDefinerTP->momentum(event,setup,tp);
205  TrackingParticle::Point vertex = parametersDefinerTP->vertex(event,setup,tp);
206  double dxySim = (-vertex.x()*sin(momentum.phi())+vertex.y()*cos(momentum.phi()));
207  double dzSim = vertex.z() - (vertex.x()*momentum.x()+vertex.y()*momentum.y())/sqrt(momentum.perp2())
208  * momentum.z()/sqrt(momentum.perp2());
209 
210  st++;
211 
212  histoProducerAlgo_->fill_generic_simTrack_histos(w,momentumTP,vertexTP, tp->eventId().bunchCrossing());
213 
214  const TrajectorySeed* matchedSeedPointer=0;
215  std::vector<std::pair<edm::RefToBase<TrajectorySeed>, double> > rt;
216  if(simRecColl.find(tp) != simRecColl.end()){
217  rt = simRecColl[tp];
218  if (rt.size()!=0) {
219  ats++;
220  matchedSeedPointer = rt.begin()->first.get();
221  edm::LogVerbatim("TrackValidator") << "TrackingParticle #" << st
222  << " with pt=" << sqrt(tp->momentum().perp2())
223  << " associated with quality:" << rt.begin()->second <<"\n";
224  }
225  }else{
226  edm::LogVerbatim("TrackValidator") << "TrackingParticle #" << st
227  << " with pt=" << sqrt(tp->momentum().perp2())
228  << " NOT associated to any TrajectorySeed" << "\n";
229  }
230 
231  int nSimHits = tp->numberOfTrackerHits();
232 
233  double vtx_z_PU = tp->vertex().z();
234  for (size_t j = 0; j < tv.size(); j++) {
235  if (tp->eventId().event() == tv[j].eventId().event()) {
236  vtx_z_PU = tv[j].position().z();
237  break;
238  }
239  }
240 
241 
242  //fixme convert seed into track
243  reco::Track* matchedTrackPointer = 0;
244  if (matchedSeedPointer) {
245  TSCBLBuilderNoMaterial tscblBuilder;
246  TransientTrackingRecHit::RecHitPointer recHit = theTTRHBuilder->build(&*(matchedSeedPointer->recHits().second-1));
248  TrajectoryStateClosestToBeamLine tsAtClosestApproachSeed = tscblBuilder(*state.freeState(),bs);//as in TrackProducerAlgorithm
249  if(!(tsAtClosestApproachSeed.isValid())){
250  edm::LogVerbatim("SeedValidator")<<"TrajectoryStateClosestToBeamLine not valid";
251  continue;
252  }
253  const reco::TrackBase::Point vSeed1(tsAtClosestApproachSeed.trackStateAtPCA().position().x(),
254  tsAtClosestApproachSeed.trackStateAtPCA().position().y(),
255  tsAtClosestApproachSeed.trackStateAtPCA().position().z());
256  const reco::TrackBase::Vector pSeed(tsAtClosestApproachSeed.trackStateAtPCA().momentum().x(),
257  tsAtClosestApproachSeed.trackStateAtPCA().momentum().y(),
258  tsAtClosestApproachSeed.trackStateAtPCA().momentum().z());
259  //GlobalPoint vSeed(vSeed1.x()-bs.x0(),vSeed1.y()-bs.y0(),vSeed1.z()-bs.z0());
260  PerigeeTrajectoryError seedPerigeeErrors = PerigeeConversions::ftsToPerigeeError(tsAtClosestApproachSeed.trackStateAtPCA());
261  matchedTrackPointer = new reco::Track(0.,0., vSeed1, pSeed, 1, seedPerigeeErrors.covarianceMatrix());
262  matchedTrackPointer->setHitPattern(matchedSeedPointer->recHits().first,matchedSeedPointer->recHits().second);
263  }
264 
265  histoProducerAlgo_->fill_recoAssociated_simTrack_histos(w,*tp,tp->momentum(),tp->vertex(),dxySim,dzSim,nSimHits,
266  matchedTrackPointer,puinfo.getPU_NumInteractions(), vtx_z_PU);
267 
268  sts++;
269  if (matchedTrackPointer) asts++;
270 
271  } // End for (TrackingParticleCollection::size_type i=0; i<tPCeff.size(); i++){
272 
273  //
274  //fill reconstructed seed histograms
275  //
276  edm::LogVerbatim("TrackValidator") << "\n# of TrajectorySeeds with "
277  << label[www].process()<<":"
278  << label[www].label()<<":"
279  << label[www].instance()
280  << ": " << seedCollection->size() << "\n";
281  int sat(0); //This counter counts the number of recoTracks that are associated to SimTracks from Signal only
282  int at(0); //This counter counts the number of recoTracks that are associated to SimTracks
283  int rT(0); //This counter counts the number of recoTracks in general
284 
285  TSCBLBuilderNoMaterial tscblBuilder;
286  for(TrajectorySeedCollection::size_type i=0; i<seedCollection->size(); ++i){
287  edm::RefToBase<TrajectorySeed> seed(seedCollection, i);
288  rT++;
289 
290  //get parameters and errors from the seed state
291  TransientTrackingRecHit::RecHitPointer recHit = theTTRHBuilder->build(&*(seed->recHits().second-1));
292  TrajectoryStateOnSurface state = trajectoryStateTransform::transientState( seed->startingState(), recHit->surface(), theMF.product());
293  TrajectoryStateClosestToBeamLine tsAtClosestApproachSeed = tscblBuilder(*state.freeState(),bs);//as in TrackProducerAlgorithm
294  if(!(tsAtClosestApproachSeed.isValid())){
295  edm::LogVerbatim("SeedValidator")<<"TrajectoryStateClosestToBeamLine not valid";
296  continue;
297  }
298  const reco::TrackBase::Point vSeed1(tsAtClosestApproachSeed.trackStateAtPCA().position().x(),
299  tsAtClosestApproachSeed.trackStateAtPCA().position().y(),
300  tsAtClosestApproachSeed.trackStateAtPCA().position().z());
301  const reco::TrackBase::Vector pSeed(tsAtClosestApproachSeed.trackStateAtPCA().momentum().x(),
302  tsAtClosestApproachSeed.trackStateAtPCA().momentum().y(),
303  tsAtClosestApproachSeed.trackStateAtPCA().momentum().z());
304  //GlobalPoint vSeed(vSeed1.x()-bs.x0(),vSeed1.y()-bs.y0(),vSeed1.z()-bs.z0());
305  PerigeeTrajectoryError seedPerigeeErrors = PerigeeConversions::ftsToPerigeeError(tsAtClosestApproachSeed.trackStateAtPCA());
306 
307  //fixme
308  reco::Track* trackFromSeed = new reco::Track(0.,0., vSeed1, pSeed, 1, seedPerigeeErrors.covarianceMatrix());
309  trackFromSeed->setHitPattern(seed->recHits().first,seed->recHits().second);
310 
311  bool isSigSimMatched(false);
312  bool isSimMatched(false);
313  bool isChargeMatched(true);
314  int numAssocSeeds = 0;
315  int tpbx = 0;
316  int nSimHits = 0;
317  double sharedFraction = 0.;
318  std::vector<std::pair<TrackingParticleRef, double> > tp;
319  if(recSimColl.find(seed) != recSimColl.end()) {
320  tp = recSimColl[seed];
321  if (tp.size()!=0) {
322 
323  nSimHits = tp[0].first->numberOfTrackerHits();
324  sharedFraction = tp[0].second;
325  isSimMatched = true;
326  if (tp[0].first->charge() != seed->startingState().parameters().charge()) isChargeMatched = false;
327  if(simRecColl.find(tp[0].first) != simRecColl.end()) numAssocSeeds = simRecColl[tp[0].first].size();
328  //std::cout << numAssocRecoTracks << std::endl;
329  tpbx = tp[0].first->eventId().bunchCrossing();
330 
331  at++;
332 
333  for (unsigned int tp_ite=0;tp_ite<tp.size();++tp_ite){
334  TrackingParticle trackpart = *(tp[tp_ite].first);
335  if ((trackpart.eventId().event() == 0) && (trackpart.eventId().bunchCrossing() == 0)){
336  isSigSimMatched = true;
337  sat++;
338  break;
339  }
340  }
341 
342 
343  edm::LogVerbatim("SeedValidator") << "TrajectorySeed #" << rT << " associated with quality:" << tp.begin()->second <<"\n";
344  }
345  } else {
346  edm::LogVerbatim("SeedValidator") << "TrajectorySeed #" << rT << " NOT associated to any TrackingParticle" << "\n";
347  }
348 
349  histoProducerAlgo_->fill_generic_recoTrack_histos(w,*trackFromSeed,bs.position(),isSimMatched,isSigSimMatched,
350  isChargeMatched, numAssocSeeds, puinfo.getPU_NumInteractions(),
351  tpbx, nSimHits, sharedFraction);
352 
353  //Fill other histos
354  try{
355  if (tp.size()==0) continue;
356 
358 
359  TrackingParticleRef tpr = tp.begin()->first;
360 
361  //compute tracking particle parameters at point of closest approach to the beamline
362  TrackingParticle::Vector momentumTP = parametersDefinerTP->momentum(event,setup,tpr);
363  TrackingParticle::Point vertexTP = parametersDefinerTP->vertex(event,setup,tpr);
364 
365  // LogTrace("SeedValidatorTEST") << "assocChi2=" << tp.begin()->second << "\n"
366  // << "" << "\n"
367  // << "ptREC=" << ptSeed << "\n"
368  // << "etaREC=" << etaSeed << "\n"
369  // << "qoverpREC=" << qoverpSeed << "\n"
370  // << "dxyREC=" << dxySeed << "\n"
371  // << "dzREC=" << dzSeed << "\n"
372  // << "thetaREC=" << thetaSeed << "\n"
373  // << "phiREC=" << phiSeed << "\n"
374  // << "" << "\n"
375  // << "qoverpError()=" << qoverpErrorSeed << "\n"
376  // << "dxyError()=" << dxyErrorSeed << "\n"
377  // << "dzError()=" << dzErrorSeed << "\n"
378  // << "thetaError()=" << lambdaErrorSeed << "\n"
379  // << "phiError()=" << phiErrorSeed << "\n"
380  // << "" << "\n"
381  // << "ptSIM=" << sqrt(assocTrack->momentum().perp2()) << "\n"
382  // << "etaSIM=" << assocTrack->momentum().Eta() << "\n"
383  // << "qoverpSIM=" << qoverpSim << "\n"
384  // << "dxySIM=" << dxySim << "\n"
385  // << "dzSIM=" << dzSim << "\n"
386  // << "thetaSIM=" << M_PI/2-lambdaSim << "\n"
387  // << "phiSIM=" << phiSim << "\n"
388  // << "" << "\n"
389  // << "contrib_Qoverp=" << contrib_Qoverp << "\n"
390  // << "contrib_dxy=" << contrib_dxy << "\n"
391  // << "contrib_dz=" << contrib_dz << "\n"
392  // << "contrib_theta=" << contrib_theta << "\n"
393  // << "contrib_phi=" << contrib_phi << "\n"
394  // << "" << "\n"
395  // <<"chi2PULL="<<contrib_Qoverp+contrib_dxy+contrib_dz+contrib_theta+contrib_phi<<"\n";
396 
397  histoProducerAlgo_->fill_ResoAndPull_recoTrack_histos(w,momentumTP,vertexTP,tpr->charge(),
398  *trackFromSeed,bs.position());
399 
400 
401  } catch (cms::Exception e){
402  LogTrace("SeedValidator") << "exception found: " << e.what() << "\n";
403  }
404  }// End of for(TrajectorySeedCollection::size_type i=0; i<seedCollection->size(); ++i)
405 
407 
408  edm::LogVerbatim("SeedValidator") << "Total Simulated: " << st << "\n"
409  << "Total Associated (simToReco): " << ats << "\n"
410  << "Total Reconstructed: " << rT << "\n"
411  << "Total Associated (recoToSim): " << at << "\n"
412  << "Total Fakes: " << rT-at << "\n";
413  w++;
414  }
415  }
416 }
virtual char const * what() const
Definition: Exception.cc:141
int i
Definition: DBlmapReader.cc:9
int event() const
get the contents of the subdetector field (should be protected?)
std::vector< TrackingParticle > TrackingParticleCollection
const_iterator end() const
last iterator over the map (read only)
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
const_iterator find(const key_type &k) const
find element with specified reference key
std::vector< const TrackAssociatorBase * > associator
virtual void fill_ResoAndPull_recoTrack_histos(int count, const TrackingParticle::Vector &momentumTP, const TrackingParticle::Point &vertexTP, int chargeTP, const reco::Track &track, const math::XYZPoint &bsPosition)=0
uint16_t size_type
TrackingParticleSelector tpSelector
math::XYZPointD Point
point in the space
virtual void fill_recoAssociated_simTrack_histos(int count, const TrackingParticle &tp, const TrackingParticle::Vector &momentumTP, const TrackingParticle::Point &vertexTP, double dxy, double dz, int nSimHits, const reco::Track *track, int numVertices, double vertz)=0
std::vector< edm::InputTag > label
FreeTrajectoryState * freeState(bool withErrors=true) const
T sqrt(T t)
Definition: SSEVec.h:48
virtual void fill_generic_recoTrack_histos(int count, const reco::Track &track, const math::XYZPoint &bsPosition, bool isMatched, bool isSigMatched, bool isChargeMatched, int numAssocRecoTracks, int numVertices, int tpbunchcrossing, int nSimHits, double sharedFraction)=0
int bunchCrossing() const
get the detector field from this detid
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
int j
Definition: DBlmapReader.cc:9
math::XYZPoint Point
point in the space
Definition: TrackBase.h:76
bool first
Definition: L1TdeRCT.cc:94
edm::ESHandle< TransientTrackingRecHitBuilder > theTTRHBuilder
#define LogTrace(id)
void setHitPattern(const C &c)
set hit patterns from vector of hit references
Definition: TrackBase.h:246
PTrajectoryStateOnDet const & startingState() const
TrajectoryStateOnSurface transientState(const PTrajectoryStateOnDet &ts, const Surface *surface, const MagneticField *field)
virtual void fill_simAssociated_recoTrack_histos(int count, const reco::Track &track)=0
std::vector< TrackingVertex > TrackingVertexCollection
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:62
range recHits() const
virtual void fill_trackBased_histos(int count, int assTracks, int numRecoTracks, int numSimTracks)=0
T const * product() const
Definition: Handle.h:74
const int getPU_NumInteractions() const
char state
Definition: procUtils.cc:75
EncodedEventId eventId() const
Signal source, crossing number.
Monte Carlo truth information used for tracking validation.
PerigeeTrajectoryError ftsToPerigeeError(const FTS &originalFTS)
const Point & position() const
position
Definition: BeamSpot.h:63
T w() const
std::vector< std::string > associators
math::XYZVectorD Vector
point in the space
MTVHistoProducerAlgo * histoProducerAlgo_
virtual void fill_generic_simTrack_histos(int counter, const TrackingParticle::Vector &, const TrackingParticle::Point &vertex, int bx)=0
math::XYZVector Vector
spatial vector
Definition: TrackBase.h:74
tuple size
Write out results.
edm::ESHandle< MagneticField > theMF
list at
Definition: asciidump.py:428
void TrackerSeedValidator::beginRun ( edm::Run const &  ,
edm::EventSetup const &  setup 
)
virtual

Method called before the event loop.

Reimplemented from edm::EDAnalyzer.

Definition at line 64 of file TrackerSeedValidator.cc.

References MultiTrackValidatorBase::associator, MultiTrackValidatorBase::associators, MTVHistoProducerAlgo::bookRecoHistos(), MTVHistoProducerAlgo::bookRecoHistosForStandaloneRunning(), MTVHistoProducerAlgo::bookSimHistos(), builderName, DQMStore::cd(), MultiTrackValidatorBase::dbe_, TrackerOfflineValidation_Dqm_cff::dirName, dirName_, edm::EventSetup::get(), DQMStore::goUp(), histoProducerAlgo_, MTVHistoProducerAlgo::initialize(), edm::InputTag::instance(), edm::InputTag::label(), MultiTrackValidatorBase::label, edm::InputTag::process(), edm::ESHandle< class >::product(), linker::replace(), runStandalone, DQMStore::setCurrentFolder(), MultiTrackValidatorBase::theMF, theTTRHBuilder, and w().

64  {
67 
68  for (unsigned int ww=0;ww<associators.size();ww++){
69  for (unsigned int www=0;www<label.size();www++){
70 
71  dbe_->cd();
72  InputTag algo = label[www];
73  string dirName=dirName_;
74  if (algo.process()!="")
75  dirName+=algo.process()+"_";
76  if(algo.label()!="")
77  dirName+=algo.label()+"_";
78  if(algo.instance()!="")
79  dirName+=algo.instance()+"_";
80  // if (dirName.find("Seeds")<dirName.length()){
81  // dirName.replace(dirName.find("Seeds"),6,"");
82  // }
83  string assoc= associators[ww];
84  if (assoc.find("Track")<assoc.length()){
85  assoc.replace(assoc.find("Track"),5,"");
86  }
87  dirName+=assoc;
88  std::replace(dirName.begin(), dirName.end(), ':', '_');
89 
90  dbe_->setCurrentFolder(dirName.c_str());
91 
92 
93  // vector of vector initialization
94  histoProducerAlgo_->initialize(); //TO BE FIXED. I'D LIKE TO AVOID THIS CALL
95 
96  dbe_->goUp(); //Is this really necessary ???
97  string subDirName = dirName + "/simulation";
98  dbe_->setCurrentFolder(subDirName.c_str());
99 
100  //Booking histograms concerning with simulated tracks
102 
103  dbe_->cd();
104  dbe_->setCurrentFolder(dirName.c_str());
105 
106  //Booking histograms concerning with reconstructed tracks
109  }//end loop www
111  for (unsigned int w=0;w<associators.size();w++) {
112  setup.get<TrackAssociatorRecord>().get(associators[w],theAssociator);
113  associator.push_back( theAssociator.product() );
114  }//end loop w
115  }// end loop ww
116 }
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:411
std::vector< const TrackAssociatorBase * > associator
virtual void bookSimHistos()=0
def replace
Definition: linker.py:10
virtual void bookRecoHistos()=0
std::vector< edm::InputTag > label
virtual void initialize()=0
edm::ESHandle< TransientTrackingRecHitBuilder > theTTRHBuilder
T const * product() const
Definition: ESHandle.h:62
std::string const & label() const
Definition: InputTag.h:42
std::string const & process() const
Definition: InputTag.h:46
virtual void bookRecoHistosForStandaloneRunning()=0
void goUp(void)
equivalent to &quot;cd ..&quot;
Definition: DQMStore.cc:445
T w() const
std::vector< std::string > associators
MTVHistoProducerAlgo * histoProducerAlgo_
std::string const & instance() const
Definition: InputTag.h:43
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:434
edm::ESHandle< MagneticField > theMF
void TrackerSeedValidator::endRun ( edm::Run const &  ,
edm::EventSetup const &   
)
virtual

Method called at the end of the event loop.

Reimplemented from edm::EDAnalyzer.

Definition at line 418 of file TrackerSeedValidator.cc.

References MultiTrackValidatorBase::associators, MultiTrackValidatorBase::dbe_, MTVHistoProducerAlgo::fillHistosFromVectors(), MTVHistoProducerAlgo::fillProfileHistosFromVectors(), MTVHistoProducerAlgo::finalHistoFits(), histoProducerAlgo_, MultiTrackValidatorBase::label, LogTrace, MultiTrackValidatorBase::out, runStandalone, DQMStore::save(), and w().

418  {
419  LogTrace("SeedValidator") << "TrackerSeedValidator::endRun()";
420  int w=0;
421  for (unsigned int ww=0;ww<associators.size();ww++){
422  for (unsigned int www=0;www<label.size();www++){
423 
427 
428  w++;
429  }
430  }
431  if ( out.size() != 0 && dbe_ ) dbe_->save(out);
432 }
void save(const std::string &filename, const std::string &path="", const std::string &pattern="", const std::string &rewrite="", SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, const std::string &fileupdate="RECREATE")
Definition: DQMStore.cc:2118
std::vector< edm::InputTag > label
virtual void fillProfileHistosFromVectors(int counter)=0
#define LogTrace(id)
virtual void finalHistoFits(int counter)=0
virtual void fillHistosFromVectors(int counter)=0
T w() const
std::vector< std::string > associators
MTVHistoProducerAlgo * histoProducerAlgo_

Member Data Documentation

std::string TrackerSeedValidator::builderName
private

Definition at line 37 of file TrackerSeedValidator.h.

Referenced by beginRun(), and TrackerSeedValidator().

CosmicTrackingParticleSelector TrackerSeedValidator::cosmictpSelector
private

Definition at line 45 of file TrackerSeedValidator.h.

std::string TrackerSeedValidator::dirName_
private

Definition at line 39 of file TrackerSeedValidator.h.

Referenced by beginRun(), and TrackerSeedValidator().

MTVHistoProducerAlgo* TrackerSeedValidator::histoProducerAlgo_
private
bool TrackerSeedValidator::runStandalone
private

Definition at line 41 of file TrackerSeedValidator.h.

Referenced by beginRun(), endRun(), and TrackerSeedValidator().

edm::ESHandle<TransientTrackingRecHitBuilder> TrackerSeedValidator::theTTRHBuilder
private

Definition at line 38 of file TrackerSeedValidator.h.

Referenced by analyze(), and beginRun().

TrackingParticleSelector TrackerSeedValidator::tpSelector
private

Definition at line 44 of file TrackerSeedValidator.h.

Referenced by analyze(), and TrackerSeedValidator().