ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerConversions.cc
Revision: 1.7
Committed: Mon Jul 14 21:01:00 2008 UTC (16 years, 9 months ago) by loizides
Content type: text/plain
Branch: MAIN
Changes since 1.6: +3 -5 lines
Log Message:
Adapt to new getters.

File Contents

# User Rev Content
1 loizides 1.7 // $Id: FillerConversions.cc,v 1.6 2008/07/13 08:46: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     FillerConversions::FillerConversions(const ParameterSet &cfg, bool active,
14     const ConversionElectronMap *conversionElectronMap) :
15 loizides 1.6 BaseFiller(cfg,"Conversions",active),
16 bendavid 1.1 edmName_(Conf().getUntrackedParameter<string>("edmName","conversions")),
17     mitName_(Conf().getUntrackedParameter<string>("mitName","Conversions")),
18     conversionElectronMap_(conversionElectronMap),
19 loizides 1.6 conversions_(new mithep::ConversionArr(16)),
20 bendavid 1.1 conversionMap_(new mithep::ConversionMap)
21     {
22 loizides 1.2 // Constructor.
23 bendavid 1.1 }
24    
25 loizides 1.2 //--------------------------------------------------------------------------------------------------
26 bendavid 1.1 FillerConversions::~FillerConversions()
27     {
28 loizides 1.2 // Destructor.
29    
30 loizides 1.4 delete conversions_;
31 loizides 1.2 delete conversionMap_;
32 bendavid 1.1 }
33    
34 loizides 1.2 //--------------------------------------------------------------------------------------------------
35 bendavid 1.1 void FillerConversions::BookDataBlock(TreeWriter &tws)
36     {
37 loizides 1.2 // Add conversions to tree.
38    
39 bendavid 1.1 tws.AddBranch(mitName_.c_str(),&conversions_);
40     }
41    
42 loizides 1.2 //--------------------------------------------------------------------------------------------------
43 bendavid 1.1 void FillerConversions::FillDataBlock(const edm::Event &event,
44     const edm::EventSetup &setup)
45     {
46 loizides 1.5 // Fill conversions data structure and maps.
47 bendavid 1.1
48     conversions_->Reset();
49     conversionMap_->Reset();
50 loizides 1.5
51     Handle<reco::ConversionCollection> hConversionProduct;
52     GetProduct(edmName_, hConversionProduct, event);
53    
54     conversionMap_->SetEdmProductId(hConversionProduct.id().id());
55 bendavid 1.1
56 loizides 1.5 const reco::ConversionCollection inConversions = *(hConversionProduct.product());
57 bendavid 1.1
58     for (reco::ConversionCollection::const_iterator inConversion = inConversions.begin();
59     inConversion != inConversions.end(); ++inConversion) {
60    
61 loizides 1.6 mithep::Conversion *outConversion = conversions_->Allocate();
62 loizides 1.5 new (outConversion) mithep::Conversion(inConversion->conversionVertex().x(),
63     inConversion->conversionVertex().y(),
64     inConversion->conversionVertex().z(),
65     inConversion->conversionVertex().xError(),
66     inConversion->conversionVertex().yError(),
67     inConversion->conversionVertex().zError());
68 bendavid 1.3
69 loizides 1.7 outConversion->DecayVertex().SetChi2(inConversion->conversionVertex().chi2());
70     outConversion->DecayVertex().SetNDof((Int_t)inConversion->conversionVertex().ndof());
71 loizides 1.5
72     outConversion->SetDCotTheta(inConversion->pairCotThetaSeparation());
73     outConversion->SetEOverP(inConversion->EoverP());
74     outConversion->SetPairMass(inConversion->pairInvariantMass());
75     outConversion->SetPairMomentum(inConversion->pairMomentum().x(),
76     inConversion->pairMomentum().y(),
77     inConversion->pairMomentum().z());
78 bendavid 1.1
79 loizides 1.5 if (conversionElectronMap_) {
80     std::vector<reco::TrackRef> trackRefs = inConversion->tracks();
81     for (std::vector<reco::TrackRef>::const_iterator trackRef = trackRefs.begin();
82     trackRef != trackRefs.end(); ++trackRef) {
83     outConversion->AddDaughter(conversionElectronMap_->GetMit(*trackRef));
84     }
85     }
86    
87     reco::ConversionRef theRef(hConversionProduct, inConversion-inConversions.begin());
88     conversionMap_->Add(theRef, outConversion);
89 bendavid 1.1 }
90 loizides 1.2
91 bendavid 1.1 conversions_->Trim();
92     }