ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerConversions.cc
Revision: 1.3
Committed: Mon Jul 7 15:33:51 2008 UTC (16 years, 9 months ago) by bendavid
Content type: text/plain
Branch: MAIN
Changes since 1.2: +9 -2 lines
Log Message:
added some conversion details, fixed compile warning

File Contents

# User Rev Content
1 bendavid 1.3 // $Id: FillerConversions.cc,v 1.2 2008/07/03 07:56:14 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 bendavid 1.1 BaseFiller(cfg, "Conversions", active),
16     edmName_(Conf().getUntrackedParameter<string>("edmName","conversions")),
17     mitName_(Conf().getUntrackedParameter<string>("mitName","Conversions")),
18     conversionElectronMap_(conversionElectronMap),
19     conversions_(new mithep::ConversionArr),
20     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     delete conversionMap_;
31 bendavid 1.1 }
32    
33 loizides 1.2 //--------------------------------------------------------------------------------------------------
34 bendavid 1.1 void FillerConversions::BookDataBlock(TreeWriter &tws)
35     {
36 loizides 1.2 // Add conversions to tree.
37    
38 bendavid 1.1 tws.AddBranch(mitName_.c_str(),&conversions_);
39     }
40    
41 loizides 1.2 //--------------------------------------------------------------------------------------------------
42 bendavid 1.1 void FillerConversions::FillDataBlock(const edm::Event &event,
43     const edm::EventSetup &setup)
44     {
45    
46     conversions_->Reset();
47     conversionMap_->Reset();
48    
49     try {
50     event.getByLabel(edm::InputTag(edmName_),conversionProduct_);
51     } catch (cms::Exception& ex) {
52     edm::LogError("FillerConversions") << "Error! Cannot get collection with label "
53 loizides 1.2 << edmName_ << endl;
54 bendavid 1.1 throw edm::Exception(edm::errors::Configuration, "FillerConversions:FillDataBlock()\n")
55     << "Error! Cannot get collection with label " << edmName_ << endl;
56     }
57    
58     conversionMap_->SetEdmProductId(conversionProduct_.id().id());
59    
60     const reco::ConversionCollection inConversions = *(conversionProduct_.product());
61    
62     for (reco::ConversionCollection::const_iterator inConversion = inConversions.begin();
63     inConversion != inConversions.end(); ++inConversion) {
64    
65     mithep::Conversion* outConversion = conversions_->Allocate();
66 loizides 1.2 new (outConversion) mithep::Conversion(inConversion->conversionVertex().x(),
67     inConversion->conversionVertex().y(),
68     inConversion->conversionVertex().z(),
69     inConversion->conversionVertex().xError(),
70     inConversion->conversionVertex().yError(),
71     inConversion->conversionVertex().zError());
72 bendavid 1.1
73     outConversion->GetVertex().SetChi2(inConversion->conversionVertex().chi2());
74 bendavid 1.3 outConversion->GetVertex().SetNDof((Int_t)inConversion->conversionVertex().ndof());
75    
76     outConversion->SetDCotTheta(inConversion->pairCotThetaSeparation());
77     outConversion->SetEOverP(inConversion->EoverP());
78     outConversion->SetPairMass(inConversion->pairInvariantMass());
79     outConversion->SetPairMomentum(inConversion->pairMomentum().x(),
80     inConversion->pairMomentum().y(),
81     inConversion->pairMomentum().z());
82 bendavid 1.1
83     if (conversionElectronMap_) {
84 loizides 1.2 std::vector<reco::TrackRef> trackRefs = inConversion->tracks();
85     for (std::vector<reco::TrackRef>::const_iterator trackRef = trackRefs.begin();
86     trackRef != trackRefs.end(); ++trackRef) {
87     outConversion->AddDaughter(conversionElectronMap_->GetMit(*trackRef));
88     }
89 bendavid 1.1 }
90    
91     reco::ConversionRef theRef(conversionProduct_, inConversion-inConversions.begin());
92     conversionMap_->Add(theRef, outConversion);
93     }
94 loizides 1.2
95 bendavid 1.1 conversions_->Trim();
96     }