ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerConversions.cc
Revision: 1.1
Committed: Wed Jul 2 19:41:02 2008 UTC (16 years, 10 months ago) by bendavid
Content type: text/plain
Branch: MAIN
Log Message:
added fillers for photons and conversions

File Contents

# User Rev Content
1 bendavid 1.1 // $Id: FillerGlobalMuons.cc,v 1.3 2008/06/18 19:17:21 loizides Exp $
2    
3     #include "FWCore/MessageLogger/interface/MessageLogger.h"
4     #include "FWCore/Framework/interface/ESHandle.h"
5     #include "DataFormats/Common/interface/Handle.h"
6     #include "FWCore/ServiceRegistry/interface/Service.h"
7     #include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h"
8     #include "DataFormats/TrackReco/interface/Track.h"
9     #include "DataFormats/TrackReco/interface/TrackFwd.h"
10     #include "SimDataFormats/TrackingAnalysis/interface/TrackingParticle.h"
11     #include "SimDataFormats/TrackingAnalysis/interface/TrackingParticleFwd.h"
12     #include "DataFormats/RecoCandidate/interface/TrackAssociation.h"
13    
14     #include "MitAna/DataTree/interface/Track.h"
15     #include "MitAna/DataTree/interface/Names.h"
16     #include "MitProd/TreeFiller/interface/FillerConversions.h"
17    
18     using namespace std;
19     using namespace edm;
20     using namespace mithep;
21    
22     //-------------------------------------------------------------------------------------------------
23     FillerConversions::FillerConversions(const ParameterSet &cfg, bool active, const ConversionElectronMap* conversionElectronMap) :
24     BaseFiller(cfg, "Conversions", active),
25     edmName_(Conf().getUntrackedParameter<string>("edmName","conversions")),
26     edmDataName_(Conf().getUntrackedParameter<string>("edmDataName","")),
27     mitName_(Conf().getUntrackedParameter<string>("mitName","Conversions")),
28     conversionElectronMap_(conversionElectronMap),
29     conversions_(new mithep::ConversionArr),
30     conversionMap_(new mithep::ConversionMap)
31     {
32     }
33    
34     //-------------------------------------------------------------------------------------------------
35     FillerConversions::~FillerConversions()
36     {
37     delete conversionMap_;
38     }
39    
40     //-------------------------------------------------------------------------------------------------
41     void FillerConversions::BookDataBlock(TreeWriter &tws)
42     {
43     tws.AddBranch(mitName_.c_str(),&conversions_);
44     }
45    
46     //-------------------------------------------------------------------------------------------------
47     void FillerConversions::FillDataBlock(const edm::Event &event,
48     const edm::EventSetup &setup)
49     {
50     // Fill global muon information. Links to the various standalone components are created in the
51     // link resolution.
52    
53     conversions_->Reset();
54     conversionMap_->Reset();
55    
56     //Handle<TrackingParticleCollection> trackingParticleProduct;
57     try {
58     event.getByLabel(edm::InputTag(edmName_),conversionProduct_);
59     } catch (cms::Exception& ex) {
60     edm::LogError("FillerConversions") << "Error! Cannot get collection with label "
61     << edmName_ << endl;
62     throw edm::Exception(edm::errors::Configuration, "FillerConversions:FillDataBlock()\n")
63     << "Error! Cannot get collection with label " << edmName_ << endl;
64     }
65    
66     conversionMap_->SetEdmProductId(conversionProduct_.id().id());
67    
68    
69     //const TrackingParticleCollection TrackingParticles = *(trackingParticleProduct.product());
70     const reco::ConversionCollection inConversions = *(conversionProduct_.product());
71    
72     // Loop through all tracks
73     for (reco::ConversionCollection::const_iterator inConversion = inConversions.begin();
74     inConversion != inConversions.end(); ++inConversion) {
75    
76     mithep::Conversion* outConversion = conversions_->Allocate();
77     new (outConversion) mithep::Conversion(inConversion->conversionVertex().x(),inConversion->conversionVertex().y(),inConversion->conversionVertex().z(), inConversion->conversionVertex().xError(),inConversion->conversionVertex().yError(),inConversion->conversionVertex().zError());
78    
79    
80     outConversion->GetVertex().SetChi2(inConversion->conversionVertex().chi2());
81     outConversion->GetVertex().SetNDof(inConversion->conversionVertex().ndof());
82    
83     if (conversionElectronMap_) {
84     std::vector<reco::TrackRef> trackRefs = inConversion->tracks();
85     for (std::vector<reco::TrackRef>::const_iterator trackRef = trackRefs.begin(); trackRef != trackRefs.end(); ++trackRef) {
86     outConversion->AddDaughter(conversionElectronMap_->GetMit(*trackRef));
87     }
88     }
89    
90    
91     reco::ConversionRef theRef(conversionProduct_, inConversion-inConversions.begin());
92     conversionMap_->Add(theRef, outConversion);
93    
94     }
95     conversions_->Trim();
96     }
97    
98