#include <MultiTrackValidator.h>
Public Member Functions | |
void | analyze (const edm::Event &, const edm::EventSetup &) |
Method called once per event. | |
void | beginRun (edm::Run const &, edm::EventSetup const &) |
Method called before the event loop. | |
void | endRun (edm::Run const &, edm::EventSetup const &) |
Method called at the end of the event loop. | |
MultiTrackValidator (const edm::ParameterSet &pset) | |
Constructor. | |
virtual | ~MultiTrackValidator () |
Destructor. | |
Private Attributes | |
edm::InputTag | associatormap |
CosmicTrackingParticleSelector | cosmictpSelector |
std::string | dirName_ |
MTVHistoProducerAlgo * | histoProducerAlgo_ |
bool | runStandalone |
TrackingParticleSelector | tpSelector |
bool | UseAssociators |
bool | useGsf |
Class that prodecs histrograms to validate Track Reconstruction performances
Definition at line 17 of file MultiTrackValidator.h.
MultiTrackValidator::MultiTrackValidator | ( | const edm::ParameterSet & | pset | ) |
Constructor.
Definition at line 42 of file MultiTrackValidator.cc.
References associatormap, MultiTrackValidatorBase::associators, cosmictpSelector, MultiTrackValidatorBase::dbe_, dirName_, reco::get(), edm::ParameterSet::getParameter(), histoProducerAlgo_, MultiTrackValidatorBase::m_dEdx1Tag, MultiTrackValidatorBase::m_dEdx2Tag, runStandalone, tpSelector, UseAssociators, and useGsf.
:MultiTrackValidatorBase(pset){ //theExtractor = IsoDepositExtractorFactory::get()->create( extractorName, extractorPSet); ParameterSet psetForHistoProducerAlgo = pset.getParameter<ParameterSet>("histoProducerAlgoBlock"); string histoProducerAlgoName = psetForHistoProducerAlgo.getParameter<string>("ComponentName"); histoProducerAlgo_ = MTVHistoProducerAlgoFactory::get()->create(histoProducerAlgoName ,psetForHistoProducerAlgo); histoProducerAlgo_->setDQMStore(dbe_); dirName_ = pset.getParameter<std::string>("dirName"); associatormap = pset.getParameter< edm::InputTag >("associatormap"); UseAssociators = pset.getParameter< bool >("UseAssociators"); m_dEdx1Tag = pset.getParameter< edm::InputTag >("dEdx1Tag"); m_dEdx2Tag = pset.getParameter< edm::InputTag >("dEdx2Tag"); tpSelector = TrackingParticleSelector(pset.getParameter<double>("ptMinTP"), pset.getParameter<double>("minRapidityTP"), pset.getParameter<double>("maxRapidityTP"), pset.getParameter<double>("tipTP"), pset.getParameter<double>("lipTP"), pset.getParameter<int>("minHitTP"), pset.getParameter<bool>("signalOnlyTP"), pset.getParameter<bool>("chargedOnlyTP"), pset.getParameter<bool>("stableOnlyTP"), pset.getParameter<std::vector<int> >("pdgIdTP")); cosmictpSelector = CosmicTrackingParticleSelector(pset.getParameter<double>("ptMinTP"), pset.getParameter<double>("minRapidityTP"), pset.getParameter<double>("maxRapidityTP"), pset.getParameter<double>("tipTP"), pset.getParameter<double>("lipTP"), pset.getParameter<int>("minHitTP"), pset.getParameter<bool>("chargedOnlyTP"), pset.getParameter<std::vector<int> >("pdgIdTP")); useGsf = pset.getParameter<bool>("useGsf"); runStandalone = pset.getParameter<bool>("runStandalone"); if (!UseAssociators) { associators.clear(); associators.push_back(associatormap.label()); } }
MultiTrackValidator::~MultiTrackValidator | ( | ) | [virtual] |
Destructor.
Definition at line 90 of file MultiTrackValidator.cc.
References histoProducerAlgo_.
{delete histoProducerAlgo_;}
void MultiTrackValidator::analyze | ( | const edm::Event & | event, |
const edm::EventSetup & | setup | ||
) | [virtual] |
Method called once per event.
Implements edm::EDAnalyzer.
Definition at line 147 of file MultiTrackValidator.cc.
References MultiTrackValidatorBase::associator, associatormap, MultiTrackValidatorBase::associators, asciidump::at, MultiTrackValidatorBase::bsSrc, EncodedEventId::bunchCrossing(), edm::HandleBase::clear(), funct::cos(), cosmictpSelector, alignCSCRings::e, edm::AssociationMap< Tag >::end(), EncodedEventId::event(), TrackingParticle::eventId(), MTVHistoProducerAlgo::fill_dedx_recoTrack_histos(), 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, edm::EventSetup::get(), edm::Ref< C, T, F >::get(), edm::Event::getByLabel(), histoProducerAlgo_, i, MultiTrackValidatorBase::ignoremissingtkcollection_, edm::InputTag::instance(), j, MultiTrackValidatorBase::label, edm::InputTag::label(), MultiTrackValidatorBase::label_pileupinfo, MultiTrackValidatorBase::label_tp_effic, MultiTrackValidatorBase::label_tp_fake, MultiTrackValidatorBase::label_tv, LogTrace, MultiTrackValidatorBase::m_dEdx1Tag, MultiTrackValidatorBase::m_dEdx2Tag, ParticleBase::momentum(), MultiTrackValidatorBase::parametersDefiner, edm::InputTag::process(), edm::Handle< T >::product(), dt_dqm_sourceclient_common_cff::reco, funct::sin(), findQualityFiles::size, mathSSE::sqrt(), tpSelector, DetId::Tracker, TrackingParticle::trackPSimHit(), UseAssociators, ParticleBase::vertex(), w(), and cms::Exception::what().
{ using namespace reco; edm::LogInfo("TrackValidator") << "\n====================================================" << "\n" << "Analyzing new event" << "\n" << "====================================================\n" << "\n"; edm::ESHandle<ParametersDefinerForTP> parametersDefinerTP; setup.get<TrackAssociatorRecord>().get(parametersDefiner,parametersDefinerTP); edm::Handle<TrackingParticleCollection> TPCollectionHeff ; event.getByLabel(label_tp_effic,TPCollectionHeff); const TrackingParticleCollection tPCeff = *(TPCollectionHeff.product()); edm::Handle<TrackingParticleCollection> TPCollectionHfake ; event.getByLabel(label_tp_fake,TPCollectionHfake); const TrackingParticleCollection tPCfake = *(TPCollectionHfake.product()); //if (tPCeff.size()==0) {edm::LogInfo("TrackValidator") //<< "TP Collection for efficiency studies has size = 0! Skipping Event." ; return;} //if (tPCfake.size()==0) {edm::LogInfo("TrackValidator") //<< "TP Collection for fake rate studies has size = 0! Skipping Event." ; return;} edm::Handle<reco::BeamSpot> recoBeamSpotHandle; event.getByLabel(bsSrc,recoBeamSpotHandle); reco::BeamSpot bs = *recoBeamSpotHandle; edm::Handle< vector<PileupSummaryInfo> > puinfoH; event.getByLabel(label_pileupinfo,puinfoH); PileupSummaryInfo puinfo; for (unsigned int puinfo_ite=0;puinfo_ite<(*puinfoH).size();++puinfo_ite){ if ((*puinfoH)[puinfo_ite].getBunchCrossing()==0){ puinfo=(*puinfoH)[puinfo_ite]; break; } } edm::Handle<TrackingVertexCollection> tvH; event.getByLabel(label_tv,tvH); TrackingVertexCollection tv = *tvH; int w=0; //counter counting the number of sets of histograms for (unsigned int ww=0;ww<associators.size();ww++){ for (unsigned int www=0;www<label.size();www++){ // //get collections from the event // edm::Handle<View<Track> > trackCollection; if(!event.getByLabel(label[www], trackCollection)&&ignoremissingtkcollection_)continue; //if (trackCollection->size()==0) //edm::LogInfo("TrackValidator") << "TrackCollection size = 0!" ; //continue; //} reco::RecoToSimCollection recSimColl; reco::SimToRecoCollection simRecColl; //associate tracks if(UseAssociators){ edm::LogVerbatim("TrackValidator") << "Analyzing " << label[www].process()<<":" << label[www].label()<<":" << label[www].instance()<<" with " << associators[ww].c_str() <<"\n"; LogTrace("TrackValidator") << "Calling associateRecoToSim method" << "\n"; recSimColl=associator[ww]->associateRecoToSim(trackCollection, TPCollectionHfake, &event); LogTrace("TrackValidator") << "Calling associateSimToReco method" << "\n"; simRecColl=associator[ww]->associateSimToReco(trackCollection, TPCollectionHeff, &event); } else{ edm::LogVerbatim("TrackValidator") << "Analyzing " << label[www].process()<<":" << label[www].label()<<":" << label[www].instance()<<" with " << associatormap.process()<<":" << associatormap.label()<<":" << associatormap.instance()<<"\n"; Handle<reco::SimToRecoCollection > simtorecoCollectionH; event.getByLabel(associatormap,simtorecoCollectionH); simRecColl= *(simtorecoCollectionH.product()); Handle<reco::RecoToSimCollection > recotosimCollectionH; event.getByLabel(associatormap,recotosimCollectionH); recSimColl= *(recotosimCollectionH.product()); } // ######################################################## // fill simulation histograms (LOOP OVER TRACKINGPARTICLES) // ######################################################## //compute number of tracks per eta interval // edm::LogVerbatim("TrackValidator") << "\n# of TrackingParticles: " << tPCeff.size() << "\n"; int ats(0); //This counter counts the number of simTracks that are "associated" to recoTracks int st(0); //This counter counts the number of simulated tracks passing the MTV selection (i.e. tpSelector(tp) ) unsigned sts(0); //This counter counts the number of simTracks surviving the bunchcrossing cut unsigned asts(0); //This counter counts the number of simTracks that are "associated" to recoTracks surviving the bunchcrossing cut for (TrackingParticleCollection::size_type i=0; i<tPCeff.size(); i++){ //loop over TPs collection for tracking efficiency TrackingParticleRef tpr(TPCollectionHeff, i); TrackingParticle* tp=const_cast<TrackingParticle*>(tpr.get()); ParticleBase::Vector momentumTP; ParticleBase::Point vertexTP; double dxySim(0); double dzSim(0); //---------- THIS PART HAS TO BE CLEANED UP. THE PARAMETER DEFINER WAS NOT MEANT TO BE USED IN THIS WAY ---------- //If the TrackingParticle is collison like, get the momentum and vertex at production state if(parametersDefiner=="LhcParametersDefinerForTP") { if(! tpSelector(*tp)) continue; momentumTP = tp->momentum(); vertexTP = tp->vertex(); //Calcualte the impact parameters w.r.t. PCA ParticleBase::Vector momentum = parametersDefinerTP->momentum(event,setup,*tp); ParticleBase::Point vertex = parametersDefinerTP->vertex(event,setup,*tp); dxySim = (-vertex.x()*sin(momentum.phi())+vertex.y()*cos(momentum.phi())); dzSim = vertex.z() - (vertex.x()*momentum.x()+vertex.y()*momentum.y())/sqrt(momentum.perp2()) * momentum.z()/sqrt(momentum.perp2()); } //If the TrackingParticle is comics, get the momentum and vertex at PCA if(parametersDefiner=="CosmicParametersDefinerForTP") { if(! cosmictpSelector(*tp,&bs,event,setup)) continue; momentumTP = parametersDefinerTP->momentum(event,setup,*tp); vertexTP = parametersDefinerTP->vertex(event,setup,*tp); dxySim = (-vertexTP.x()*sin(momentumTP.phi())+vertexTP.y()*cos(momentumTP.phi())); dzSim = vertexTP.z() - (vertexTP.x()*momentumTP.x()+vertexTP.y()*momentumTP.y())/sqrt(momentumTP.perp2()) * momentumTP.z()/sqrt(momentumTP.perp2()); } //---------- THE PART ABOVE HAS TO BE CLEANED UP. THE PARAMETER DEFINER WAS NOT MEANT TO BE USED IN THIS WAY ---------- st++; //This counter counts the number of simulated tracks passing the MTV selection (i.e. tpSelector(tp) ) // in the coming lines, histos are filled using as input // - momentumTP // - vertexTP // - dxySim // - dzSim histoProducerAlgo_->fill_generic_simTrack_histos(w,momentumTP,vertexTP, tp->eventId().bunchCrossing()); // ############################################## // fill RecoAssociated SimTracks' histograms // ############################################## // bool isRecoMatched(false); // UNUSED const reco::Track* matchedTrackPointer=0; std::vector<std::pair<RefToBase<Track>, double> > rt; if(simRecColl.find(tpr) != simRecColl.end()){ rt = (std::vector<std::pair<RefToBase<Track>, double> >) simRecColl[tpr]; if (rt.size()!=0) { ats++; //This counter counts the number of simTracks that have a recoTrack associated // isRecoMatched = true; // UNUSED matchedTrackPointer = rt.begin()->first.get(); edm::LogVerbatim("TrackValidator") << "TrackingParticle #" << st << " with pt=" << sqrt(momentumTP.perp2()) << " associated with quality:" << rt.begin()->second <<"\n"; } }else{ edm::LogVerbatim("TrackValidator") << "TrackingParticle #" << st << " with pt,eta,phi: " << sqrt(momentumTP.perp2()) << " , " << momentumTP.eta() << " , " << momentumTP.phi() << " , " << " NOT associated to any reco::Track" << "\n"; } std::vector<PSimHit> simhits=tp->trackPSimHit(DetId::Tracker); int nSimHits = simhits.end()-simhits.begin(); double vtx_z_PU = vertexTP.z(); for (size_t j = 0; j < tv.size(); j++) { if (tp->eventId().event() == tv[j].eventId().event()) { vtx_z_PU = tv[j].position().z(); break; } } histoProducerAlgo_->fill_recoAssociated_simTrack_histos(w,*tp,momentumTP,vertexTP,dxySim,dzSim,nSimHits,matchedTrackPointer,puinfo.getPU_NumInteractions(), vtx_z_PU); sts++; if (matchedTrackPointer) asts++; } // End for (TrackingParticleCollection::size_type i=0; i<tPCeff.size(); i++){ //if (st!=0) h_tracksSIM[w]->Fill(st); // TO BE FIXED // ############################################## // fill recoTracks histograms (LOOP OVER TRACKS) // ############################################## edm::LogVerbatim("TrackValidator") << "\n# of reco::Tracks with " << label[www].process()<<":" << label[www].label()<<":" << label[www].instance() << ": " << trackCollection->size() << "\n"; int sat(0); //This counter counts the number of recoTracks that are associated to SimTracks from Signal only int at(0); //This counter counts the number of recoTracks that are associated to SimTracks int rT(0); //This counter counts the number of recoTracks in general // dE/dx // at some point this could be generalized, with a vector of tags and a corresponding vector of Handles // I'm writing the interface such to take vectors of ValueMaps edm::Handle<edm::ValueMap<reco::DeDxData> > dEdx1Handle; edm::Handle<edm::ValueMap<reco::DeDxData> > dEdx2Handle; std::vector<edm::ValueMap<reco::DeDxData> > v_dEdx; v_dEdx.clear(); //std::cout << "PIPPO: label is " << label[www] << std::endl; if (label[www].label()=="generalTracks") { try { event.getByLabel(m_dEdx1Tag, dEdx1Handle); const edm::ValueMap<reco::DeDxData> dEdx1 = *dEdx1Handle.product(); event.getByLabel(m_dEdx2Tag, dEdx2Handle); const edm::ValueMap<reco::DeDxData> dEdx2 = *dEdx2Handle.product(); v_dEdx.push_back(dEdx1); v_dEdx.push_back(dEdx2); } catch (cms::Exception e){ LogTrace("TrackValidator") << "exception found: " << e.what() << "\n"; } } //end dE/dx for(View<Track>::size_type i=0; i<trackCollection->size(); ++i){ RefToBase<Track> track(trackCollection, i); rT++; bool isSigSimMatched(false); bool isSimMatched(false); bool isChargeMatched(true); int numAssocRecoTracks = 0; int tpbx = 0; int nSimHits = 0; double sharedFraction = 0.; std::vector<std::pair<TrackingParticleRef, double> > tp; if(recSimColl.find(track) != recSimColl.end()){ tp = recSimColl[track]; if (tp.size()!=0) { std::vector<PSimHit> simhits=tp[0].first->trackPSimHit(DetId::Tracker); nSimHits = simhits.end()-simhits.begin(); sharedFraction = tp[0].second; isSimMatched = true; if (tp[0].first->charge() != track->charge()) isChargeMatched = false; if(simRecColl.find(tp[0].first) != simRecColl.end()) numAssocRecoTracks = simRecColl[tp[0].first].size(); //std::cout << numAssocRecoTracks << std::endl; tpbx = tp[0].first->eventId().bunchCrossing(); at++; for (unsigned int tp_ite=0;tp_ite<tp.size();++tp_ite){ TrackingParticle trackpart = *(tp[tp_ite].first); if ((trackpart.eventId().event() == 0) && (trackpart.eventId().bunchCrossing() == 0)){ isSigSimMatched = true; sat++; break; } } edm::LogVerbatim("TrackValidator") << "reco::Track #" << rT << " with pt=" << track->pt() << " associated with quality:" << tp.begin()->second <<"\n"; } } else { edm::LogVerbatim("TrackValidator") << "reco::Track #" << rT << " with pt=" << track->pt() << " NOT associated to any TrackingParticle" << "\n"; } histoProducerAlgo_->fill_generic_recoTrack_histos(w,*track,bs.position(),isSimMatched,isSigSimMatched, isChargeMatched, numAssocRecoTracks, puinfo.getPU_NumInteractions(), tpbx, nSimHits, sharedFraction); // dE/dx // reco::TrackRef track2 = reco::TrackRef( trackCollection, i ); if (v_dEdx.size() > 0) histoProducerAlgo_->fill_dedx_recoTrack_histos(w,track, v_dEdx); //if (v_dEdx.size() > 0) histoProducerAlgo_->fill_dedx_recoTrack_histos(track2, v_dEdx); //Fill other histos //try{ //Is this really necessary ???? if (tp.size()==0) continue; histoProducerAlgo_->fill_simAssociated_recoTrack_histos(w,*track); TrackingParticleRef tpr = tp.begin()->first; /* TO BE FIXED LATER if (associators[ww]=="TrackAssociatorByChi2"){ //association chi2 double assocChi2 = -tp.begin()->second;//in association map is stored -chi2 h_assochi2[www]->Fill(assocChi2); h_assochi2_prob[www]->Fill(TMath::Prob((assocChi2)*5,5)); } else if (associators[ww]=="quickTrackAssociatorByHits"){ double fraction = tp.begin()->second; h_assocFraction[www]->Fill(fraction); h_assocSharedHit[www]->Fill(fraction*track->numberOfValidHits()); } */ //Get tracking particle parameters at point of closest approach to the beamline ParticleBase::Vector momentumTP = parametersDefinerTP->momentum(event,setup,*(tpr.get())); ParticleBase::Point vertexTP = parametersDefinerTP->vertex(event,setup,*(tpr.get())); int chargeTP = tpr->charge(); histoProducerAlgo_->fill_ResoAndPull_recoTrack_histos(w,momentumTP,vertexTP,chargeTP, *track,bs.position()); //TO BE FIXED //std::vector<PSimHit> simhits=tpr.get()->trackPSimHit(DetId::Tracker); //nrecHit_vs_nsimHit_rec2sim[w]->Fill(track->numberOfValidHits(), (int)(simhits.end()-simhits.begin() )); /* } // End of try{ catch (cms::Exception e){ LogTrace("TrackValidator") << "exception found: " << e.what() << "\n"; } */ } // End of for(View<Track>::size_type i=0; i<trackCollection->size(); ++i){ histoProducerAlgo_->fill_trackBased_histos(w,at,rT,st); edm::LogVerbatim("TrackValidator") << "Total Simulated: " << st << "\n" << "Total Associated (simToReco): " << ats << "\n" << "Total Reconstructed: " << rT << "\n" << "Total Associated (recoToSim): " << at << "\n" << "Total Fakes: " << rT-at << "\n"; w++; } // End of for (unsigned int www=0;www<label.size();www++){ } //END of for (unsigned int ww=0;ww<associators.size();ww++){ }
void MultiTrackValidator::beginRun | ( | edm::Run const & | , |
edm::EventSetup const & | setup | ||
) | [virtual] |
Method called before the event loop.
Reimplemented from edm::EDAnalyzer.
Definition at line 92 of file MultiTrackValidator.cc.
References algo, MultiTrackValidatorBase::associator, MultiTrackValidatorBase::associators, MTVHistoProducerAlgo::bookRecoHistos(), MTVHistoProducerAlgo::bookRecoHistosForStandaloneRunning(), MTVHistoProducerAlgo::bookSimHistos(), DQMStore::cd(), MultiTrackValidatorBase::dbe_, TrackerOfflineValidation_Dqm_cff::dirName, dirName_, edm::EventSetup::get(), DQMStore::goUp(), histoProducerAlgo_, MTVHistoProducerAlgo::initialize(), edm::InputTag::instance(), MultiTrackValidatorBase::label, edm::InputTag::label(), edm::InputTag::process(), edm::ESHandle< T >::product(), linker::replace(), runStandalone, DQMStore::setCurrentFolder(), UseAssociators, and w().
{ // dbe_->showDirStructure(); //int j=0; //is This Necessary ??? for (unsigned int ww=0;ww<associators.size();ww++){ for (unsigned int www=0;www<label.size();www++){ dbe_->cd(); InputTag algo = label[www]; string dirName=dirName_; if (algo.process()!="") dirName+=algo.process()+"_"; if(algo.label()!="") dirName+=algo.label()+"_"; if(algo.instance()!="") dirName+=algo.instance()+"_"; if (dirName.find("Tracks")<dirName.length()){ dirName.replace(dirName.find("Tracks"),6,""); } string assoc= associators[ww]; if (assoc.find("Track")<assoc.length()){ assoc.replace(assoc.find("Track"),5,""); } dirName+=assoc; std::replace(dirName.begin(), dirName.end(), ':', '_'); dbe_->setCurrentFolder(dirName.c_str()); // vector of vector initialization histoProducerAlgo_->initialize(); //TO BE FIXED. I'D LIKE TO AVOID THIS CALL dbe_->goUp(); //Is this really necessary ??? string subDirName = dirName + "/simulation"; dbe_->setCurrentFolder(subDirName.c_str()); //Booking histograms concerning with simulated tracks histoProducerAlgo_->bookSimHistos(); dbe_->cd(); dbe_->setCurrentFolder(dirName.c_str()); //Booking histograms concerning with reconstructed tracks histoProducerAlgo_->bookRecoHistos(); if (runStandalone) histoProducerAlgo_->bookRecoHistosForStandaloneRunning(); if (UseAssociators) { edm::ESHandle<TrackAssociatorBase> theAssociator; for (unsigned int w=0;w<associators.size();w++) { setup.get<TrackAssociatorRecord>().get(associators[w],theAssociator); associator.push_back( theAssociator.product() ); }//end loop w } }//end loop www }// end loop ww }
void MultiTrackValidator::endRun | ( | edm::Run const & | , |
edm::EventSetup const & | |||
) | [virtual] |
Method called at the end of the event loop.
Reimplemented from edm::EDAnalyzer.
Definition at line 493 of file MultiTrackValidator.cc.
References MultiTrackValidatorBase::associators, MultiTrackValidatorBase::dbe_, MTVHistoProducerAlgo::fillHistosFromVectors(), MTVHistoProducerAlgo::fillProfileHistosFromVectors(), MTVHistoProducerAlgo::finalHistoFits(), histoProducerAlgo_, MultiTrackValidatorBase::label, MultiTrackValidatorBase::out, runStandalone, DQMStore::save(), MultiTrackValidatorBase::skipHistoFit, and w().
{ int w=0; for (unsigned int ww=0;ww<associators.size();ww++){ for (unsigned int www=0;www<label.size();www++){ if(!skipHistoFit && runStandalone) histoProducerAlgo_->finalHistoFits(w); if (runStandalone) histoProducerAlgo_->fillProfileHistosFromVectors(w); histoProducerAlgo_->fillHistosFromVectors(w); w++; } } if ( out.size() != 0 && dbe_ ) dbe_->save(out); }
Definition at line 37 of file MultiTrackValidator.h.
Referenced by analyze(), and MultiTrackValidator().
Definition at line 48 of file MultiTrackValidator.h.
Referenced by analyze(), and MultiTrackValidator().
std::string MultiTrackValidator::dirName_ [private] |
Definition at line 36 of file MultiTrackValidator.h.
Referenced by beginRun(), and MultiTrackValidator().
Definition at line 49 of file MultiTrackValidator.h.
Referenced by analyze(), beginRun(), endRun(), MultiTrackValidator(), and ~MultiTrackValidator().
bool MultiTrackValidator::runStandalone [private] |
Definition at line 44 of file MultiTrackValidator.h.
Referenced by beginRun(), endRun(), and MultiTrackValidator().
Definition at line 47 of file MultiTrackValidator.h.
Referenced by analyze(), and MultiTrackValidator().
bool MultiTrackValidator::UseAssociators [private] |
Definition at line 38 of file MultiTrackValidator.h.
Referenced by analyze(), beginRun(), and MultiTrackValidator().
bool MultiTrackValidator::useGsf [private] |
Definition at line 43 of file MultiTrackValidator.h.
Referenced by MultiTrackValidator().