ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerSuperClusters.cc
Revision: 1.10
Committed: Wed Mar 24 15:41:22 2010 UTC (15 years, 1 month ago) by sixie
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_014a, Mit_014, Mit_014pre3, Mit_014pre2, Mit_014pre1, Mit_013d, Mit_013c, Mit_013b, Mit_013a, Mit_013
Changes since 1.9: +13 -1 lines
Log Message:
Add H/E variable

File Contents

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