Public Member Functions | |
ZToLLEdmNtupleDumper (const edm::ParameterSet &) | |
Private Member Functions | |
void | produce (edm::Event &, const edm::EventSetup &) |
Private Attributes | |
std::vector< edm::InputTag > | isolations1_ |
std::vector< edm::InputTag > | isolations2_ |
std::vector< edm::InputTag > | z_ |
std::vector< edm::InputTag > | zGenParticlesMatch_ |
std::vector< std::string > | zName_ |
Definition at line 10 of file ZToLLEdmNtupleDumper.cc.
ZToLLEdmNtupleDumper::ZToLLEdmNtupleDumper | ( | const edm::ParameterSet & | cfg | ) |
Definition at line 30 of file ZToLLEdmNtupleDumper.cc.
References edm::ParameterSet::getParameter(), i, isolations1_, isolations2_, z, z_, zGenParticlesMatch_, and zName_.
00030 { 00031 string alias; 00032 vector<ParameterSet> psets = cfg.getParameter<vector<ParameterSet> > ( "zBlocks" ); 00033 for( std::vector<edm::ParameterSet>::const_iterator i = psets.begin(); i != psets.end(); ++ i ) { 00034 string zName = i->getParameter<string>( "zName" ); 00035 InputTag z = i->getParameter<InputTag>( "z" ); 00036 InputTag zGenParticlesMatch = i->getParameter<InputTag>( "zGenParticlesMatch" ); 00037 InputTag isolations1 = i->getParameter<InputTag>( "isolations1" ); 00038 InputTag isolations2 = i->getParameter<InputTag>( "isolations2" ); 00039 zName_.push_back( zName ); 00040 z_.push_back( z ); 00041 zGenParticlesMatch_.push_back( zGenParticlesMatch ); 00042 isolations1_.push_back( isolations1 ); 00043 isolations2_.push_back( isolations2 ); 00044 produces<vector<float> >( alias = zName + "Mass" ).setBranchAlias( alias ); 00045 produces<vector<float> >( alias = zName + "Pt" ).setBranchAlias( alias ); 00046 produces<vector<float> >( alias = zName + "Eta" ).setBranchAlias( alias ); 00047 produces<vector<float> >( alias = zName + "Phi" ).setBranchAlias( alias ); 00048 produces<vector<float> >( alias = zName + "Y" ).setBranchAlias( alias ); 00049 produces<vector<float> >( alias = zName + "Dau1Pt" ).setBranchAlias( alias ); 00050 produces<vector<float> >( alias = zName + "Dau2Pt" ).setBranchAlias( alias ); 00051 produces<vector<float> >( alias = zName + "Dau1Eta" ).setBranchAlias( alias ); 00052 produces<vector<float> >( alias = zName + "Dau2Eta" ).setBranchAlias( alias ); 00053 produces<vector<float> >( alias = zName + "Dau1Phi" ).setBranchAlias( alias ); 00054 produces<vector<float> >( alias = zName + "Dau2Phi" ).setBranchAlias( alias ); 00055 produces<vector<float> >( alias = zName + "Dau1Iso" ).setBranchAlias( alias ); 00056 produces<vector<float> >( alias = zName + "Dau2Iso" ).setBranchAlias( alias ); 00057 produces<vector<float> >( alias = zName + "TrueMass" ).setBranchAlias( alias ); 00058 produces<vector<float> >( alias = zName + "TruePt" ).setBranchAlias( alias ); 00059 produces<vector<float> >( alias = zName + "TrueEta" ).setBranchAlias( alias ); 00060 produces<vector<float> >( alias = zName + "TruePhi" ).setBranchAlias( alias ); 00061 produces<vector<float> >( alias = zName + "TrueY" ).setBranchAlias( alias ); 00062 } 00063 }
void ZToLLEdmNtupleDumper::produce | ( | edm::Event & | evt, | |
const edm::EventSetup & | ||||
) | [private, virtual] |
Implements edm::EDProducer.
Definition at line 65 of file ZToLLEdmNtupleDumper.cc.
References c, edm::RefToBase< T >::castTo(), reco::Candidate::daughter(), reco::Particle::eta(), edm::Event::getByLabel(), i, edm::Ref< C, T, F >::isNonnull(), iso1, isolations1_, isolations2_, reco::Particle::mass(), reco::Candidate::masterClone(), reco::Particle::phi(), reco::Particle::pt(), edm::Event::put(), reco::Particle::rapidity(), size, z, z_, zGenParticlesMatch_, and zName_.
00065 { 00066 size_t size = z_.size(); 00067 for( size_t c = 0; c < size; ++ c ) { 00068 Handle<CandidateCollection> zColl; 00069 evt.getByLabel( z_[c], zColl ); 00070 Handle<CandMatchMap> zGenParticlesMatch; 00071 evt.getByLabel( zGenParticlesMatch_[c], zGenParticlesMatch ); 00072 typedef AssociationVector<CandidateRefProd,vector<double> > IsolationCollection; 00073 Handle<IsolationCollection> isolations1, isolations2; 00074 evt.getByLabel( isolations1_[c], isolations1 ); 00075 evt.getByLabel( isolations2_[c], isolations2 ); 00076 size_t zSize = zColl->size(); 00077 auto_ptr<vector<float> > zMass( new vector<float> ); 00078 auto_ptr<vector<float> > zPt( new vector<float> ); 00079 auto_ptr<vector<float> > zEta( new vector<float> ); 00080 auto_ptr<vector<float> > zPhi( new vector<float> ); 00081 auto_ptr<vector<float> > zY( new vector<float> ); 00082 auto_ptr<vector<float> > zDau1Pt( new vector<float> ); 00083 auto_ptr<vector<float> > zDau2Pt( new vector<float> ); 00084 auto_ptr<vector<float> > zDau1Eta( new vector<float> ); 00085 auto_ptr<vector<float> > zDau2Eta( new vector<float> ); 00086 auto_ptr<vector<float> > zDau1Phi( new vector<float> ); 00087 auto_ptr<vector<float> > zDau2Phi( new vector<float> ); 00088 auto_ptr<vector<float> > zDau1Iso( new vector<float> ); 00089 auto_ptr<vector<float> > zDau2Iso( new vector<float> ); 00090 auto_ptr<vector<float> > trueZMass( new vector<float> ); 00091 auto_ptr<vector<float> > trueZPt( new vector<float> ); 00092 auto_ptr<vector<float> > trueZEta( new vector<float> ); 00093 auto_ptr<vector<float> > trueZPhi( new vector<float> ); 00094 auto_ptr<vector<float> > trueZY( new vector<float> ); 00095 for( size_t i = 0; i < zSize; ++ i ) { 00096 const Candidate & z = (*zColl)[ i ]; 00097 CandidateRef zRef( zColl, i ); 00098 zMass->push_back( z.mass() ); 00099 zPt->push_back( z.pt() ); 00100 zEta->push_back( z.eta() ); 00101 zPhi->push_back( z.phi() ); 00102 zY->push_back( z.rapidity() ); 00103 const Candidate * dau1 = z.daughter(0); 00104 const Candidate * dau2 = z.daughter(1); 00105 zDau1Pt->push_back( dau1->pt() ); 00106 zDau2Pt->push_back( dau2->pt() ); 00107 zDau1Eta->push_back( dau1->eta() ); 00108 zDau2Eta->push_back( dau2->eta() ); 00109 zDau1Phi->push_back( dau1->phi() ); 00110 zDau2Phi->push_back( dau2->phi() ); 00111 double iso1 = (*isolations1)[ dau1->masterClone().castTo<CandidateRef>() ]; 00112 double iso2 = (*isolations2)[ dau2->masterClone().castTo<CandidateRef>() ]; 00113 zDau1Iso->push_back( iso1 ); 00114 zDau2Iso->push_back( iso2 ); 00115 CandMatchMap::const_iterator trueZIter = zGenParticlesMatch->find( zRef ); 00116 if ( trueZIter != zGenParticlesMatch->end() ) { 00117 CandidateRef trueZRef = trueZIter->val; 00118 if( trueZRef.isNonnull() ) { 00119 const Candidate & z = * trueZRef; 00120 trueZMass->push_back( z.mass() ); 00121 trueZPt->push_back( z.pt() ); 00122 trueZEta->push_back( z.eta() ); 00123 trueZPhi->push_back( z.phi() ); 00124 trueZY->push_back( z.rapidity() ); 00125 } else { 00126 trueZMass->push_back( -100 ); 00127 trueZPt->push_back( -100 ); 00128 trueZEta->push_back( -100 ); 00129 trueZPhi->push_back( -100 ); 00130 trueZY->push_back( -100 ); 00131 } 00132 } 00133 } 00134 const string & zName = zName_[c]; 00135 evt.put( zMass, zName + "Mass" ); 00136 evt.put( zPt, zName + "Pt" ); 00137 evt.put( zEta, zName + "Eta" ); 00138 evt.put( zPhi, zName + "Phi" ); 00139 evt.put( zY, zName + "Y" ); 00140 evt.put( zDau1Pt, zName + "Dau1Pt" ); 00141 evt.put( zDau2Pt, zName + "Dau2Pt" ); 00142 evt.put( zDau1Eta, zName + "Dau1Eta" ); 00143 evt.put( zDau2Eta, zName + "Dau2Eta" ); 00144 evt.put( zDau1Phi, zName + "Dau1Phi" ); 00145 evt.put( zDau2Phi, zName + "Dau2Phi" ); 00146 evt.put( zDau1Iso, zName + "Dau1Iso" ); 00147 evt.put( zDau2Iso, zName + "Dau2Iso" ); 00148 evt.put( trueZMass, zName + "TrueMass" ); 00149 evt.put( trueZPt, zName + "TruePt" ); 00150 evt.put( trueZEta, zName + "TrueEta" ); 00151 evt.put( trueZPhi, zName + "TruePhi" ); 00152 evt.put( trueZY, zName + "TrueY" ); 00153 } 00154 }
std::vector<edm::InputTag> ZToLLEdmNtupleDumper::isolations1_ [private] |
Definition at line 16 of file ZToLLEdmNtupleDumper.cc.
Referenced by produce(), and ZToLLEdmNtupleDumper().
std::vector<edm::InputTag> ZToLLEdmNtupleDumper::isolations2_ [private] |
Definition at line 16 of file ZToLLEdmNtupleDumper.cc.
Referenced by produce(), and ZToLLEdmNtupleDumper().
std::vector<edm::InputTag> ZToLLEdmNtupleDumper::z_ [private] |
Definition at line 16 of file ZToLLEdmNtupleDumper.cc.
Referenced by produce(), and ZToLLEdmNtupleDumper().
std::vector<edm::InputTag> ZToLLEdmNtupleDumper::zGenParticlesMatch_ [private] |
Definition at line 16 of file ZToLLEdmNtupleDumper.cc.
Referenced by produce(), and ZToLLEdmNtupleDumper().
std::vector<std::string> ZToLLEdmNtupleDumper::zName_ [private] |
Definition at line 15 of file ZToLLEdmNtupleDumper.cc.
Referenced by produce(), and ZToLLEdmNtupleDumper().