CMS 3D CMS Logo

ZToLLEdmNtupleDumper Class Reference

Inheritance diagram for ZToLLEdmNtupleDumper:

edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper

List of all members.

Public Member Functions

 ZToLLEdmNtupleDumper (const edm::ParameterSet &)

Private Member Functions

void produce (edm::Event &, const edm::EventSetup &)

Private Attributes

std::vector< edm::InputTagisolations1_
std::vector< edm::InputTagisolations2_
std::vector< edm::InputTagz_
std::vector< edm::InputTagzGenParticlesMatch_
std::vector< std::string > zName_


Detailed Description

Definition at line 10 of file ZToLLEdmNtupleDumper.cc.


Constructor & Destructor Documentation

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 }


Member Function Documentation

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 }


Member Data Documentation

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().


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