CMS 3D CMS Logo

OptTOA Class Reference

Inheritance diagram for OptTOA:

edm::EDAnalyzer

List of all members.

Public Member Functions

 OptTOA (const edm::ParameterSet &)
 ~OptTOA ()

Private Types

typedef std::vector
< std::vector
< histogram_element_t > > 
histogram_data_t
typedef std::vector< intvint
typedef std::vector< std::string > vstring

Private Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &)
virtual void beginJob (const edm::EventSetup &)
virtual void endJob ()
void LoopOverJetTracksAssociation (const edm::ESHandle< TransientTrackBuilder > &, const edm::Handle< reco::VertexCollection > &, const edm::Handle< reco::JetTracksAssociationCollection > &)

Private Attributes

TrackClassifier classifier_
histogram_data_t histogram_data_
edm::InputTag jetTracksAssociation_
double maximumChiSquared_
int minimumNumberOfHits_
int minimumNumberOfPixelHits_
double minimumTransverseMomentum_
edm::InputTag primaryVertexProducer_
std::string rootFile_
edm::InputTag trackProducer_
reco::TrackBase::TrackQuality trackQuality_
bool useAllQualities_

Classes

struct  histogram_element_t
class  histogram_t


Detailed Description

Definition at line 45 of file OptTOA.cc.


Member Typedef Documentation

typedef std::vector<std::vector<histogram_element_t> > OptTOA::histogram_data_t [private]

Definition at line 124 of file OptTOA.cc.

typedef std::vector<int> OptTOA::vint [private]

Definition at line 61 of file OptTOA.cc.

typedef std::vector<std::string> OptTOA::vstring [private]

Definition at line 62 of file OptTOA.cc.


Constructor & Destructor Documentation

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 }

OptTOA::~OptTOA (  ) 

Definition at line 256 of file OptTOA.cc.

00256 {}


Member Function Documentation

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 }

void OptTOA::endJob ( void   )  [private, virtual]

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 }


Member Data Documentation

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]

Definition at line 66 of file OptTOA.cc.

Referenced by analyze(), and OptTOA().

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]

Definition at line 65 of file OptTOA.cc.

Referenced by analyze(), and OptTOA().

std::string OptTOA::rootFile_ [private]

Definition at line 68 of file OptTOA.cc.

Referenced by endJob(), and OptTOA().

edm::InputTag OptTOA::trackProducer_ [private]

Definition at line 64 of file OptTOA.cc.

Referenced by analyze(), and OptTOA().

reco::TrackBase::TrackQuality OptTOA::trackQuality_ [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().


The documentation for this class was generated from the following file:
Generated on Tue Jun 9 18:29:24 2009 for CMSSW by  doxygen 1.5.4