CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
TrackerSeedValidator.cc
Go to the documentation of this file.
3 
6 
28 
29 #include <TF1.h>
30 
31 using namespace std;
32 using namespace edm;
33 
35 
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 }
61 
63 
65  setup.get<IdealMagneticFieldRecord>().get(theMF);
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 }
117 
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));
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 }
417 
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 }
433 
434 
435 
virtual char const * what() const
Definition: Exception.cc:141
T getParameter(std::string const &) const
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)
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:411
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
edm::Ref< GenParticleCollection > GenParticleRef
persistent reference to a GenParticle
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 bookSimHistos()=0
void endRun(edm::Run const &, edm::EventSetup const &)
Method called at the end of the event loop.
def replace
Definition: linker.py:10
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
virtual void bookRecoHistos()=0
TrackingParticleSelector tpSelector
math::XYZPointD Point
point in the space
SingleObjectSelector< TrackingParticleCollection,::TrackingParticleSelector > TrackingParticleSelector
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
TrackerSeedValidator(const edm::ParameterSet &pset)
Constructor.
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
int j
Definition: DBlmapReader.cc:9
virtual void fillProfileHistosFromVectors(int counter)=0
virtual void initialize()=0
math::XYZPoint Point
point in the space
Definition: TrackBase.h:76
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
bool first
Definition: L1TdeRCT.cc:94
edm::ESHandle< TransientTrackingRecHitBuilder > theTTRHBuilder
#define LogTrace(id)
virtual void finalHistoFits(int counter)=0
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
virtual void fillHistosFromVectors(int counter)=0
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
TrackCharge charge() const
Charge (-1, 0 or 1)
const int getPU_NumInteractions() const
char state
Definition: procUtils.cc:75
std::string const & label() const
Definition: InputTag.h:42
EncodedEventId eventId() const
Signal source, crossing number.
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
Monte Carlo truth information used for tracking validation.
PerigeeTrajectoryError ftsToPerigeeError(const FTS &originalFTS)
virtual ~TrackerSeedValidator()
Destructor.
const Point & position() const
position
Definition: BeamSpot.h:63
T w() const
std::vector< std::string > associators
math::XYZVectorD Vector
point in the space
void analyze(const edm::Event &, const edm::EventSetup &)
Method called once per event.
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
std::string const & instance() const
Definition: InputTag.h:43
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")
tuple size
Write out results.
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:434
T get(const Candidate &c)
Definition: component.h:56
const LocalTrajectoryParameters & parameters() const
Definition: Run.h:36
edm::ESHandle< MagneticField > theMF
void beginRun(edm::Run const &, edm::EventSetup const &)
Method called before the event loop.
list at
Definition: asciidump.py:428