![]() |
![]() |
Definition at line 45 of file OptTOA.cc.
typedef std::vector<std::vector<histogram_element_t> > OptTOA::histogram_data_t [private] |
typedef std::vector<int> OptTOA::vint [private] |
typedef std::vector<std::string> OptTOA::vstring [private] |
OptTOA::OptTOA | ( | const edm::ParameterSet & | config | ) | [explicit] |
Definition at line 231 of file OptTOA.cc.
References GenMuonPlsPt100GeV_cfg::cout, lat::endl(), edm::ParameterSet::getUntrackedParameter(), int, jetTracksAssociation_, maximumChiSquared_, minimumNumberOfHits_, minimumNumberOfPixelHits_, minimumTransverseMomentum_, primaryVertexProducer_, reco::TrackBase::qualityByName(), rootFile_, trackProducer_, trackQuality_, and useAllQualities_.
00231 : classifier_(config) 00232 { 00233 trackProducer_ = config.getUntrackedParameter<edm::InputTag> ( "trackProducer" ); 00234 primaryVertexProducer_ = config.getUntrackedParameter<edm::InputTag> ( "primaryVertexProducer" ); 00235 jetTracksAssociation_ = config.getUntrackedParameter<edm::InputTag> ( "jetTracksAssociation" ); 00236 00237 rootFile_ = config.getUntrackedParameter<std::string> ( "rootFile" ); 00238 00239 minimumNumberOfHits_ = config.getUntrackedParameter<int> ( "minimumNumberOfHits" ); 00240 minimumNumberOfPixelHits_ = config.getUntrackedParameter<int> ( "minimumNumberOfPixelHits" ); 00241 minimumTransverseMomentum_ = config.getUntrackedParameter<double> ( "minimumTransverseMomentum" ); 00242 maximumChiSquared_ = config.getUntrackedParameter<double> ( "maximumChiSquared" ); 00243 00244 std::string trackQualityType = config.getUntrackedParameter<std::string>("trackQualityClass"); //used 00245 trackQuality_ = reco::TrackBase::qualityByName(trackQualityType); 00246 useAllQualities_ = false; 00247 00248 std::transform(trackQualityType.begin(), trackQualityType.end(), trackQualityType.begin(), (int(*)(int)) std::tolower); 00249 if (trackQualityType == "any") 00250 { 00251 std::cout << "Using any" << std::endl; 00252 useAllQualities_ = true; 00253 } 00254 }
void OptTOA::analyze | ( | const edm::Event & | event, | |
const edm::EventSetup & | setup | |||
) | [private, virtual] |
Implements edm::EDAnalyzer.
Definition at line 264 of file OptTOA.cc.
References classifier_, edm::EventSetup::get(), jetTracksAssociation_, LoopOverJetTracksAssociation(), TrackClassifier::newEvent(), primaryVertexProducer_, and trackProducer_.
00265 { 00266 // Track collection 00267 edm::Handle<edm::View<reco::Track> > trackCollection; 00268 event.getByLabel(trackProducer_,trackCollection); 00269 // Primary vertex 00270 edm::Handle<reco::VertexCollection> primaryVertexCollection; 00271 event.getByLabel(primaryVertexProducer_, primaryVertexCollection); 00272 // Jet to tracks associator 00273 edm::Handle<reco::JetTracksAssociationCollection> jetTracks; 00274 event.getByLabel(jetTracksAssociation_, jetTracks); 00275 // Trasient track builder 00276 edm::ESHandle<TransientTrackBuilder> TTbuilder; 00277 setup.get<TransientTrackRecord>().get("TransientTrackBuilder", TTbuilder); 00278 00279 // Setting up event information for the track categories. 00280 classifier_.newEvent(event, setup); 00281 00282 LoopOverJetTracksAssociation( 00283 TTbuilder, 00284 primaryVertexCollection, 00285 jetTracks 00286 ); 00287 }
void OptTOA::beginJob | ( | const edm::EventSetup & | setup | ) | [private, virtual] |
Reimplemented from edm::EDAnalyzer.
Definition at line 292 of file OptTOA.cc.
References histogram_data_.
00293 { 00294 histogram_data_.resize(6); 00295 }
Reimplemented from edm::EDAnalyzer.
Definition at line 300 of file OptTOA.cc.
References file, OptTOA::histogram_t::Fill(), histogram_data_, i, j, rootFile_, and OptTOA::histogram_t::Write().
00301 { 00302 TFile file(rootFile_.c_str(), "RECREATE"); 00303 file.cd(); 00304 00305 // saving the histograms 00306 for (std::size_t i=0; i<6; i++) 00307 { 00308 std::string particle; 00309 if (i == 0) 00310 particle = std::string("B_tracks"); 00311 else if (i == 1) 00312 particle = std::string("C_tracks"); 00313 else if (i == 2) 00314 particle = std::string("nonB_tracks"); 00315 else if (i == 3) 00316 particle = std::string("displaced_tracks"); 00317 else if (i == 4) 00318 particle = std::string("bad_tracks"); 00319 else 00320 particle = std::string("fake_tracks"); 00321 00322 histogram_t histogram(particle); 00323 00324 for (std::size_t j=0; j<histogram_data_[i].size(); j++) 00325 histogram.Fill(histogram_data_[i][j]); 00326 00327 histogram.Write(); 00328 } 00329 00330 file.Flush(); 00331 }
void OptTOA::LoopOverJetTracksAssociation | ( | const edm::ESHandle< TransientTrackBuilder > & | TTbuilder, | |
const edm::Handle< reco::VertexCollection > & | primaryVertexProducer_, | |||
const edm::Handle< reco::JetTracksAssociationCollection > & | jetTracksAssociation | |||
) | [private] |
Definition at line 335 of file OptTOA.cc.
References TrackCategories::Bad, TransientTrackBuilder::build(), TrackCategories::BWeakDecay, classifier_, TrackCategories::CWeakDecay, debug_cff::d0, direction, e, TrackClassifier::evaluate(), TrackCategories::Fake, histogram_data_, i, index, TrackClassifier::is(), it, IPTools::jetTrackDistance(), maximumChiSquared_, minimumNumberOfHits_, minimumNumberOfPixelHits_, minimumTransverseMomentum_, p, TrackCategories::PrimaryVertex, edm::ESHandle< T >::product(), edm::Handle< T >::product(), pv, IPTools::signedDecayLength3D(), IPTools::signedImpactParameter3D(), IPTools::signedTransverseImpactParameter(), PrimaryVertexSorter::sortedList(), track, trackQuality_, tracks, useAllQualities_, and reco::Vertex::z().
Referenced by analyze().
00340 { 00341 const TransientTrackBuilder * bproduct = TTbuilder.product(); 00342 00343 // getting the primary vertex 00344 // use first pv of the collection 00345 reco::Vertex pv; 00346 00347 if (primaryVertexProducer_->size() != 0) 00348 { 00349 PrimaryVertexSorter pvs; 00350 std::vector<reco::Vertex> sortedList = pvs.sortedList(*(primaryVertexProducer_.product())); 00351 pv = (sortedList.front()); 00352 } 00353 else 00354 { // create a dummy PV 00355 // cout << "NO PV FOUND" << endl; 00356 reco::Vertex::Error e; 00357 e(0,0)=0.0015*0.0015; 00358 e(1,1)=0.0015*0.0015; 00359 e(2,2)=15.*15.; 00360 reco::Vertex::Point p(0,0,0); 00361 pv = reco::Vertex(p,e,1,1,1); 00362 } 00363 00364 reco::JetTracksAssociationCollection::const_iterator it = jetTracksAssociation->begin(); 00365 00366 int i=0; 00367 00368 for (; it != jetTracksAssociation->end(); it++, i++) 00369 { 00370 // get jetTracks object 00371 reco::JetTracksAssociationRef jetTracks(jetTracksAssociation, i); 00372 00373 double pvZ = pv.z(); 00374 GlobalVector direction(jetTracks->first->px(), jetTracks->first->py(), jetTracks->first->pz()); 00375 00376 // get the tracks associated to the jet 00377 reco::TrackRefVector tracks = jetTracks->second; 00378 for (std::size_t index = 0; index < tracks.size(); index++) 00379 { 00380 edm::RefToBase<reco::Track> track(tracks[index]); 00381 00382 double pt = tracks[index]->pt(); 00383 double chi2 = tracks[index]->normalizedChi2(); 00384 int hits = tracks[index]->hitPattern().numberOfValidHits(); 00385 int pixelHits = tracks[index]->hitPattern().numberOfValidPixelHits(); 00386 00387 if ( 00388 hits < minimumNumberOfHits_ || 00389 pixelHits < minimumNumberOfPixelHits_ || 00390 pt < minimumTransverseMomentum_ || 00391 chi2 > maximumChiSquared_ || 00392 (!useAllQualities_ && !tracks[index]->quality(trackQuality_)) 00393 ) continue; 00394 00395 const reco::TransientTrack transientTrack = bproduct->build(&(*tracks[index])); 00396 double dta = - IPTools::jetTrackDistance(transientTrack, direction, pv).second.value(); 00397 double sdl = IPTools::signedDecayLength3D(transientTrack, direction, pv).second.value(); 00398 double ips = IPTools::signedImpactParameter3D(transientTrack, direction, pv).second.value(); 00399 double d0 = IPTools::signedTransverseImpactParameter(transientTrack, direction, pv).second.value(); 00400 double dz = tracks[index]->dz() - pvZ; 00401 00402 // Classify the reco track; 00403 classifier_.evaluate( edm::RefToBase<reco::Track>(tracks[index]) ); 00404 00405 // Check for the different categories 00406 if ( classifier_.is(TrackCategories::Fake) ) 00407 histogram_data_[5].push_back(histogram_element_t(sdl, dta, d0, dz, ips, pt, chi2, hits, pixelHits)); 00408 else if ( classifier_.is(TrackCategories::BWeakDecay) ) 00409 histogram_data_[0].push_back(histogram_element_t(sdl, dta, d0, dz, ips, pt, chi2, hits, pixelHits)); 00410 else if ( classifier_.is(TrackCategories::Bad) ) 00411 histogram_data_[4].push_back(histogram_element_t(sdl, dta, d0, dz, ips, pt, chi2, hits, pixelHits)); 00412 else if ( 00413 !classifier_.is(TrackCategories::CWeakDecay) && 00414 !classifier_.is(TrackCategories::PrimaryVertex) 00415 ) 00416 histogram_data_[3].push_back(histogram_element_t(sdl, dta, d0, dz, ips, pt, chi2, hits, pixelHits)); 00417 else if ( classifier_.is(TrackCategories::CWeakDecay) ) 00418 histogram_data_[1].push_back(histogram_element_t(sdl, dta, d0, dz, ips, pt, chi2, hits, pixelHits)); 00419 else 00420 histogram_data_[2].push_back(histogram_element_t(sdl, dta, d0, dz, ips, pt, chi2, hits, pixelHits)); 00421 00422 } 00423 } 00424 }
TrackClassifier OptTOA::classifier_ [private] |
Definition at line 223 of file OptTOA.cc.
Referenced by analyze(), and LoopOverJetTracksAssociation().
histogram_data_t OptTOA::histogram_data_ [private] |
Definition at line 125 of file OptTOA.cc.
Referenced by beginJob(), endJob(), and LoopOverJetTracksAssociation().
edm::InputTag OptTOA::jetTracksAssociation_ [private] |
double OptTOA::maximumChiSquared_ [private] |
Definition at line 71 of file OptTOA.cc.
Referenced by LoopOverJetTracksAssociation(), and OptTOA().
int OptTOA::minimumNumberOfHits_ [private] |
Definition at line 70 of file OptTOA.cc.
Referenced by LoopOverJetTracksAssociation(), and OptTOA().
int OptTOA::minimumNumberOfPixelHits_ [private] |
Definition at line 70 of file OptTOA.cc.
Referenced by LoopOverJetTracksAssociation(), and OptTOA().
double OptTOA::minimumTransverseMomentum_ [private] |
Definition at line 71 of file OptTOA.cc.
Referenced by LoopOverJetTracksAssociation(), and OptTOA().
edm::InputTag OptTOA::primaryVertexProducer_ [private] |
std::string OptTOA::rootFile_ [private] |
edm::InputTag OptTOA::trackProducer_ [private] |
Definition at line 74 of file OptTOA.cc.
Referenced by LoopOverJetTracksAssociation(), and OptTOA().
bool OptTOA::useAllQualities_ [private] |
Definition at line 73 of file OptTOA.cc.
Referenced by LoopOverJetTracksAssociation(), and OptTOA().