ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerSuperClusters.cc
Revision: 1.7
Committed: Mon Jul 20 03:19:24 2009 UTC (15 years, 9 months ago) by loizides
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_011, Mit_010a, Mit_010
Changes since 1.6: +2 -3 lines
Log Message:
Cleanup

File Contents

# User Rev Content
1 loizides 1.7 // $Id: FillerSuperClusters.cc,v 1.6 2009/06/18 23:04:24 bendavid Exp $
2 sixie 1.1
3     #include "MitProd/TreeFiller/interface/FillerSuperClusters.h"
4     #include "DataFormats/EgammaReco/interface/SuperClusterFwd.h"
5     #include "DataFormats/EgammaReco/interface/SuperCluster.h"
6     #include "MitAna/DataTree/interface/BasicCluster.h"
7 loizides 1.5 #include "MitAna/DataTree/interface/SuperClusterCol.h"
8 sixie 1.1 #include "MitAna/DataTree/interface/Names.h"
9 loizides 1.5 #include "MitProd/ObjectService/interface/ObjectService.h"
10 sixie 1.1
11     using namespace std;
12     using namespace edm;
13     using namespace mithep;
14    
15     //--------------------------------------------------------------------------------------------------
16     FillerSuperClusters::FillerSuperClusters(const ParameterSet &cfg, const char *name, bool active) :
17     BaseFiller(cfg,name,active),
18     edmName_(Conf().getUntrackedParameter<string>("edmName","hybridSuperClusters")),
19     mitName_(Conf().getUntrackedParameter<string>("mitName","SuperClusters")),
20     basicClusterMapName_(Conf().getUntrackedParameter<string>("basicClusterMapName",
21     "BasicClusterMap")),
22     superClusterMapName_(Conf().getUntrackedParameter<string>("superClusterMapName",
23     "SuperClusterMap")),
24 bendavid 1.2 superClusterIdMapName_(Conf().getUntrackedParameter<string>("superClusterIdMapName",
25 loizides 1.7 "SuperClusterIdMap")),
26 sixie 1.1 basicClusterMap_(0),
27     superClusters_(new mithep::SuperClusterArr(25)),
28 bendavid 1.2 superClusterMap_(new mithep::SuperClusterMap),
29     superClusterIdMap_(new mithep::SuperClusterIdMap)
30 sixie 1.1 {
31     // Constructor.
32     }
33    
34     //--------------------------------------------------------------------------------------------------
35     FillerSuperClusters::~FillerSuperClusters()
36     {
37     // Destructor.
38    
39     delete superClusters_;
40     delete superClusterMap_;
41 bendavid 1.2 delete superClusterIdMap_;
42 sixie 1.1 }
43    
44     //--------------------------------------------------------------------------------------------------
45     void FillerSuperClusters::BookDataBlock(TreeWriter &tws)
46     {
47 loizides 1.4 // Add super cluster branch to tree and get pointers to maps.
48    
49     tws.AddBranch(mitName_,&superClusters_);
50     OS()->add<SuperClusterArr>(superClusters_,mitName_);
51    
52     if (!basicClusterMapName_.empty()) {
53     basicClusterMap_ = OS()->get<BasicClusterMap>(basicClusterMapName_);
54     if (basicClusterMap_)
55     AddBranchDep(mitName_,basicClusterMap_->GetBrName());
56     }
57 sixie 1.1
58 loizides 1.4 if (!superClusterMapName_.empty()) {
59     superClusterMap_->SetBrName(mitName_);
60     OS()->add<SuperClusterMap>(superClusterMap_,superClusterMapName_);
61     }
62     if (!superClusterIdMapName_.empty()) {
63     superClusterIdMap_->SetBrName(mitName_);
64     OS()->add<SuperClusterIdMap>(superClusterIdMap_,superClusterIdMapName_);
65     }
66 sixie 1.1 }
67    
68     //--------------------------------------------------------------------------------------------------
69     void FillerSuperClusters::FillDataBlock(const edm::Event &event,
70 loizides 1.4 const edm::EventSetup &setup)
71 sixie 1.1 {
72 loizides 1.4 // Fill the collection.
73    
74 bendavid 1.3 superClusters_->Delete();
75 sixie 1.1 superClusterMap_->Reset();
76 bendavid 1.2 superClusterIdMap_->Reset();
77 sixie 1.1
78     Handle<reco::SuperClusterCollection> hSuperClusterProduct;
79     GetProduct(edmName_, hSuperClusterProduct, event);
80     superClusterMap_->SetEdmProductId(hSuperClusterProduct.id().id());
81     const reco::SuperClusterCollection inSuperClusters = *(hSuperClusterProduct.product());
82    
83     // loop through all super clusters
84     for (reco::SuperClusterCollection::const_iterator inSC = inSuperClusters.begin();
85     inSC != inSuperClusters.end(); ++inSC) {
86    
87     mithep::SuperCluster *outSC = superClusters_->Allocate();
88     new (outSC) mithep::SuperCluster();
89    
90     outSC->SetXYZ(inSC->x(),inSC->y(),inSC->z());
91     outSC->SetEnergy(inSC->energy());
92     outSC->SetRawEnergy(inSC->rawEnergy());
93     outSC->SetPreshowerEnergy(inSC->preshowerEnergy());
94     outSC->SetPhiWidth(inSC->phiWidth());
95     outSC->SetEtaWidth(inSC->etaWidth());
96    
97 loizides 1.4 // set the seed
98 sixie 1.1 if (basicClusterMap_ && inSC->seed().isNonnull())
99     outSC->SetSeed(basicClusterMap_->GetMit(inSC->seed()));
100    
101 loizides 1.4 // add basic clusters that belong to this super cluster
102 bendavid 1.6 for(reco::CaloCluster_iterator bc = inSC->clustersBegin(); bc != inSC->clustersEnd(); ++bc) {
103 sixie 1.1 if (basicClusterMap_ && bc->isNonnull())
104     outSC->AddCluster(basicClusterMap_->GetMit(*bc));
105     }
106    
107 loizides 1.4 // add super cluster to the map
108 sixie 1.1 reco::SuperClusterRef theRef(hSuperClusterProduct, inSC-inSuperClusters.begin());
109     superClusterMap_->Add(theRef, outSC);
110    
111 loizides 1.4 // add super cluster det ids to the id map
112 bendavid 1.6 const std::vector< std::pair<DetId, float> > &pairs = inSC->hitsAndFractions();
113     for (std::vector< std::pair<DetId, float> >::const_iterator ipair = pairs.begin();
114     ipair < pairs.end(); ++ipair) {
115 bendavid 1.2
116 bendavid 1.6 const DetId &ihit = ipair->first;
117     superClusterIdMap_->Add(ihit,outSC);
118 bendavid 1.2 }
119 sixie 1.1 }
120     superClusters_->Trim();
121     }