ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerConversions.cc
Revision: 1.9
Committed: Tue Sep 30 13:01:26 2008 UTC (16 years, 7 months ago) by bendavid
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_005, Mit_004
Changes since 1.8: +2 -2 lines
Log Message:
updated to accomodate removal of FitVertex

File Contents

# User Rev Content
1 bendavid 1.9 // $Id: FillerConversions.cc,v 1.8 2008/07/31 12:34:04 loizides Exp $
2 bendavid 1.1
3 loizides 1.2 #include "MitProd/TreeFiller/interface/FillerConversions.h"
4 bendavid 1.1 #include "FWCore/MessageLogger/interface/MessageLogger.h"
5     #include "DataFormats/Common/interface/Handle.h"
6     #include "MitAna/DataTree/interface/Names.h"
7    
8     using namespace std;
9     using namespace edm;
10     using namespace mithep;
11    
12 loizides 1.2 //--------------------------------------------------------------------------------------------------
13 loizides 1.8 FillerConversions::FillerConversions(const ParameterSet &cfg, bool active) :
14 loizides 1.6 BaseFiller(cfg,"Conversions",active),
15 bendavid 1.1 edmName_(Conf().getUntrackedParameter<string>("edmName","conversions")),
16     mitName_(Conf().getUntrackedParameter<string>("mitName","Conversions")),
17 loizides 1.8 convElectronMapName_(Conf().getUntrackedParameter<string>("convElectronMapName","")),
18     conversionMapName_(Conf().getUntrackedParameter<string>("conversionMapName",
19     Form("%sMapName",mitName_.c_str()))),
20     convElectronMap_(0),
21 loizides 1.6 conversions_(new mithep::ConversionArr(16)),
22 bendavid 1.1 conversionMap_(new mithep::ConversionMap)
23     {
24 loizides 1.2 // Constructor.
25 bendavid 1.1 }
26    
27 loizides 1.2 //--------------------------------------------------------------------------------------------------
28 bendavid 1.1 FillerConversions::~FillerConversions()
29     {
30 loizides 1.2 // Destructor.
31    
32 loizides 1.4 delete conversions_;
33 loizides 1.2 delete conversionMap_;
34 bendavid 1.1 }
35    
36 loizides 1.2 //--------------------------------------------------------------------------------------------------
37 bendavid 1.1 void FillerConversions::BookDataBlock(TreeWriter &tws)
38     {
39 loizides 1.8 // Add conversions to tree. Publish and get our objects.
40 loizides 1.2
41 bendavid 1.1 tws.AddBranch(mitName_.c_str(),&conversions_);
42 loizides 1.8
43     if (!convElectronMapName_.empty())
44     OS()->add(conversionMap_,conversionMapName_.c_str());
45     convElectronMap_ = OS()->get<ConversionElectronMap>(convElectronMapName_.c_str());
46 bendavid 1.1 }
47    
48 loizides 1.2 //--------------------------------------------------------------------------------------------------
49 bendavid 1.1 void FillerConversions::FillDataBlock(const edm::Event &event,
50     const edm::EventSetup &setup)
51     {
52 loizides 1.5 // Fill conversions data structure and maps.
53 bendavid 1.1
54     conversions_->Reset();
55     conversionMap_->Reset();
56 loizides 1.5
57     Handle<reco::ConversionCollection> hConversionProduct;
58     GetProduct(edmName_, hConversionProduct, event);
59    
60     conversionMap_->SetEdmProductId(hConversionProduct.id().id());
61 bendavid 1.1
62 loizides 1.5 const reco::ConversionCollection inConversions = *(hConversionProduct.product());
63 bendavid 1.1
64     for (reco::ConversionCollection::const_iterator inConversion = inConversions.begin();
65     inConversion != inConversions.end(); ++inConversion) {
66    
67 loizides 1.6 mithep::Conversion *outConversion = conversions_->Allocate();
68 loizides 1.5 new (outConversion) mithep::Conversion(inConversion->conversionVertex().x(),
69     inConversion->conversionVertex().y(),
70     inConversion->conversionVertex().z(),
71     inConversion->conversionVertex().xError(),
72     inConversion->conversionVertex().yError(),
73     inConversion->conversionVertex().zError());
74 bendavid 1.3
75 loizides 1.7 outConversion->DecayVertex().SetChi2(inConversion->conversionVertex().chi2());
76 bendavid 1.9 outConversion->DecayVertex().SetNdof((Int_t)inConversion->conversionVertex().ndof());
77 loizides 1.5
78     outConversion->SetDCotTheta(inConversion->pairCotThetaSeparation());
79     outConversion->SetEOverP(inConversion->EoverP());
80     outConversion->SetPairMass(inConversion->pairInvariantMass());
81     outConversion->SetPairMomentum(inConversion->pairMomentum().x(),
82     inConversion->pairMomentum().y(),
83     inConversion->pairMomentum().z());
84 bendavid 1.1
85 loizides 1.8 if (convElectronMap_) {
86 loizides 1.5 std::vector<reco::TrackRef> trackRefs = inConversion->tracks();
87     for (std::vector<reco::TrackRef>::const_iterator trackRef = trackRefs.begin();
88     trackRef != trackRefs.end(); ++trackRef) {
89 loizides 1.8 outConversion->AddDaughter(convElectronMap_->GetMit(*trackRef));
90 loizides 1.5 }
91     }
92    
93     reco::ConversionRef theRef(hConversionProduct, inConversion-inConversions.begin());
94     conversionMap_->Add(theRef, outConversion);
95 bendavid 1.1 }
96 loizides 1.2
97 bendavid 1.1 conversions_->Trim();
98     }