ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerPsClusters.cc
Revision: 1.1
Committed: Sat May 5 16:49:59 2012 UTC (13 years ago) by paus
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_028, Mit_027a, Mit_027
Log Message:
Version 027 - complete version for ICHEP 2012.

File Contents

# Content
1 // $Id: FillerPsClusters.cc,v 1.19 2012/04/20 16:07:43 bendavid Exp $
2
3 #include "MitProd/TreeFiller/interface/FillerPsClusters.h"
4 #include "DataFormats/EgammaReco/interface/PreshowerCluster.h"
5 #include "DataFormats/EgammaReco/interface/PreshowerClusterFwd.h"
6 #include "DataFormats/CaloRecHit/interface/CaloClusterFwd.h"
7 #include "DataFormats/CaloRecHit/interface/CaloCluster.h"
8 #include "MitAna/DataTree/interface/PsClusterCol.h"
9 #include "MitAna/DataTree/interface/Names.h"
10 #include "MitProd/ObjectService/interface/ObjectService.h"
11 #include "RecoEcal/EgammaCoreTools/interface/EcalClusterLazyTools.h"
12 #include "RecoLocalCalo/EcalRecAlgos/interface/EcalSeverityLevelAlgo.h"
13 #include "DataFormats/EcalDetId/interface/EcalSubdetector.h"
14 #include "RecoEgamma/EgammaTools/interface/EcalClusterLocal.h"
15
16 using namespace std;
17 using namespace edm;
18 using namespace mithep;
19
20 //--------------------------------------------------------------------------------------------------
21 FillerPsClusters::FillerPsClusters(const ParameterSet &cfg, const char *name, bool active) :
22 BaseFiller(cfg,name,active),
23 edmName_(Conf().getUntrackedParameter<string>("edmName","hybridSuperClusters")),
24 mitName_(Conf().getUntrackedParameter<string>("mitName","PsClusters")),
25 psClusterMapName_(Conf().getUntrackedParameter<string>("psClusterMapName",
26 "PsClusterMap")),
27 psClusters_(new mithep::PsClusterArr(100)),
28 psClusterMap_(new mithep::PsClusterMap)
29 {
30 // Constructor.
31 }
32
33 //--------------------------------------------------------------------------------------------------
34 FillerPsClusters::~FillerPsClusters()
35 {
36 // Destructor.
37
38 delete psClusters_;
39 delete psClusterMap_;
40 }
41
42 //--------------------------------------------------------------------------------------------------
43 void FillerPsClusters::BookDataBlock(TreeWriter &tws)
44 {
45 // Add PsCluster branch and the PsClusterMap to tree.
46
47 tws.AddBranch(mitName_,&psClusters_);
48 OS()->add<PsClusterArr>(psClusters_,mitName_);
49
50 if (!psClusterMapName_.empty()) {
51 psClusterMap_->SetBrName(mitName_);
52 OS()->add<PsClusterMap>(psClusterMap_,psClusterMapName_);
53 }
54 }
55
56 //--------------------------------------------------------------------------------------------------
57 void FillerPsClusters::FillDataBlock(const edm::Event &event,
58 const edm::EventSetup &setup)
59 {
60 // Fill the PsCluster information into our structures.
61
62 psClusters_->Delete();
63 psClusterMap_->Reset();
64
65 Handle<reco::PreshowerClusterCollection> hPsClusterProduct;
66 GetProduct(edmName_, hPsClusterProduct, event);
67 psClusterMap_->SetEdmProductId(hPsClusterProduct.id().id());
68 const reco::PreshowerClusterCollection &inPsClusters = *(hPsClusterProduct.product());
69
70 // loop through all basic clusters
71 for (reco::PreshowerClusterCollection::const_iterator inBC = inPsClusters.begin();
72 inBC != inPsClusters.end(); ++inBC) {
73
74 mithep::PsCluster *outPsCluster = psClusters_->Allocate();
75 new (outPsCluster) mithep::PsCluster();
76
77 outPsCluster->SetXYZ(inBC->x(),inBC->y(),inBC->z());
78 outPsCluster->SetEnergy(inBC->energy());
79 outPsCluster->SetNHits(inBC->size());
80
81 outPsCluster->SetPsPlane(inBC->plane());
82
83 // add basic clusters to the map
84 reco::CaloClusterPtr thePtr(hPsClusterProduct, inBC-inPsClusters.begin());
85 psClusterMap_->Add(thePtr, outPsCluster);
86
87 }
88 psClusters_->Trim();
89 }