ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerConversions.cc
Revision: 1.20
Committed: Thu Mar 18 20:21:00 2010 UTC (15 years, 1 month ago) by bendavid
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_015a, Mit_015, Mit_014e, Mit_014d, Mit_014c, Mit_014b, Mit_014a, Mit_014, Mit_014pre3, Mit_014pre2, Mit_014pre1, Mit_013d, Mit_013c, Mit_013b, Mit_013a, Mit_013
Changes since 1.19: +2 -2 lines
Log Message:
Fix beginrun,beginjob mess

File Contents

# User Rev Content
1 bendavid 1.20 // $Id: FillerConversions.cc,v 1.19 2009/12/11 17:45:38 bendavid Exp $
2 bendavid 1.1
3 loizides 1.2 #include "MitProd/TreeFiller/interface/FillerConversions.h"
4 bendavid 1.10 #include "DataFormats/Common/interface/RefToPtr.h"
5 loizides 1.15 #include "MitAna/DataTree/interface/ConversionCol.h"
6 bendavid 1.1 #include "MitAna/DataTree/interface/Names.h"
7 loizides 1.15 #include "MitProd/ObjectService/interface/ObjectService.h"
8 bendavid 1.1
9     using namespace std;
10     using namespace edm;
11     using namespace mithep;
12    
13 loizides 1.2 //--------------------------------------------------------------------------------------------------
14 loizides 1.12 FillerConversions::FillerConversions(const ParameterSet &cfg, const char *name, bool active) :
15     BaseFiller(cfg,name,active),
16 bendavid 1.1 edmName_(Conf().getUntrackedParameter<string>("edmName","conversions")),
17     mitName_(Conf().getUntrackedParameter<string>("mitName","Conversions")),
18 bendavid 1.16 stablePartMapNames_(Conf().exists("stablePartMaps") ?
19     Conf().getUntrackedParameter<vector<string> >("stablePartMaps") :
20     vector<string>()),
21 loizides 1.8 conversionMapName_(Conf().getUntrackedParameter<string>("conversionMapName",
22     Form("%sMapName",mitName_.c_str()))),
23 loizides 1.6 conversions_(new mithep::ConversionArr(16)),
24 bendavid 1.1 conversionMap_(new mithep::ConversionMap)
25     {
26 loizides 1.2 // Constructor.
27 bendavid 1.1 }
28    
29 loizides 1.2 //--------------------------------------------------------------------------------------------------
30 bendavid 1.1 FillerConversions::~FillerConversions()
31     {
32 loizides 1.2 // Destructor.
33    
34 loizides 1.4 delete conversions_;
35 loizides 1.2 delete conversionMap_;
36 bendavid 1.1 }
37    
38 loizides 1.2 //--------------------------------------------------------------------------------------------------
39 bendavid 1.20 void FillerConversions::BookDataBlock(TreeWriter &tws)
40 bendavid 1.1 {
41 loizides 1.8 // Add conversions to tree. Publish and get our objects.
42 loizides 1.2
43 loizides 1.13 tws.AddBranch(mitName_,&conversions_);
44     OS()->add<mithep::ConversionArr>(conversions_,mitName_);
45 loizides 1.8
46 loizides 1.13 if (!convElectronMapName_.empty()) {
47     conversionMap_->SetBrName(mitName_);
48     OS()->add(conversionMap_,conversionMapName_);
49     }
50    
51 bendavid 1.16 for (std::vector<std::string>::const_iterator bmapName = stablePartMapNames_.begin();
52     bmapName!=stablePartMapNames_.end(); ++bmapName) {
53     if (!bmapName->empty()) {
54     const TrackPartMap *map = OS()->get<TrackPartMap>(*bmapName);
55     if (map) {
56     stablePartMaps_.push_back(map);
57     AddBranchDep(mitName_,map->GetBrName());
58     }
59     }
60 loizides 1.13 }
61 bendavid 1.1 }
62    
63 loizides 1.2 //--------------------------------------------------------------------------------------------------
64 bendavid 1.1 void FillerConversions::FillDataBlock(const edm::Event &event,
65     const edm::EventSetup &setup)
66     {
67 loizides 1.5 // Fill conversions data structure and maps.
68 bendavid 1.1
69 bendavid 1.11 conversions_->Delete();
70 bendavid 1.1 conversionMap_->Reset();
71 loizides 1.5
72     Handle<reco::ConversionCollection> hConversionProduct;
73     GetProduct(edmName_, hConversionProduct, event);
74    
75     conversionMap_->SetEdmProductId(hConversionProduct.id().id());
76 bendavid 1.1
77 loizides 1.5 const reco::ConversionCollection inConversions = *(hConversionProduct.product());
78 bendavid 1.1
79     for (reco::ConversionCollection::const_iterator inConversion = inConversions.begin();
80     inConversion != inConversions.end(); ++inConversion) {
81    
82 loizides 1.14 mithep::Vertex vertex(inConversion->conversionVertex().x(),
83     inConversion->conversionVertex().y(),
84     inConversion->conversionVertex().z(),
85     inConversion->conversionVertex().xError(),
86     inConversion->conversionVertex().yError(),
87     inConversion->conversionVertex().zError());
88     vertex.SetChi2(inConversion->conversionVertex().chi2());
89     vertex.SetNdof((Int_t)inConversion->conversionVertex().ndof());
90 bendavid 1.19 vertex.SetNTracksFit(inConversion->conversionVertex().tracksSize());
91    
92 loizides 1.6 mithep::Conversion *outConversion = conversions_->Allocate();
93 loizides 1.14 new (outConversion) mithep::Conversion(vertex);
94 loizides 1.5 outConversion->SetDCotTheta(inConversion->pairCotThetaSeparation());
95     outConversion->SetEOverP(inConversion->EoverP());
96     outConversion->SetPairMass(inConversion->pairInvariantMass());
97     outConversion->SetPairMomentum(inConversion->pairMomentum().x(),
98     inConversion->pairMomentum().y(),
99     inConversion->pairMomentum().z());
100 bendavid 1.1
101 bendavid 1.16 if (stablePartMaps_.size()) {
102 loizides 1.5 std::vector<reco::TrackRef> trackRefs = inConversion->tracks();
103     for (std::vector<reco::TrackRef>::const_iterator trackRef = trackRefs.begin();
104     trackRef != trackRefs.end(); ++trackRef) {
105 loizides 1.17 outConversion->AddDaughter(GetMitParticle(refToPtr(*trackRef)));
106 loizides 1.5 }
107     }
108    
109     reco::ConversionRef theRef(hConversionProduct, inConversion-inConversions.begin());
110     conversionMap_->Add(theRef, outConversion);
111 bendavid 1.1 }
112 loizides 1.2
113 bendavid 1.1 conversions_->Trim();
114     }
115 bendavid 1.16
116     //--------------------------------------------------------------------------------------------------
117 loizides 1.17 mithep::Particle *FillerConversions::GetMitParticle(edm::Ptr<reco::Track> ptr) const
118 bendavid 1.16 {
119     // Return our particle referenced by the edm pointer.
120    
121     mithep::Particle *mitPart = 0;
122     for (std::vector<const mithep::TrackPartMap*>::const_iterator bmap = stablePartMaps_.begin();
123     bmap!=stablePartMaps_.end(); ++bmap) {
124     const mithep::TrackPartMap *theMap = *bmap;
125     if (theMap->HasMit(ptr)) {
126     mitPart = theMap->GetMit(ptr);
127     return mitPart;
128     }
129     }
130    
131     if (!mitPart)
132     throw edm::Exception(edm::errors::Configuration, "FillerConversions::FillDataBlock()\n")
133     << "Error! MITHEP Object "
134     << "not found in AssociationMaps (" << typeid(*this).name() << ")." << std::endl;
135    
136     return mitPart;
137     }