ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerPsClusters.cc
Revision: 1.2
Committed: Tue May 15 23:31:21 2012 UTC (12 years, 11 months ago) by paus
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_032, Mit_031, Mit_025c_branch2, Mit_025c_branch1, Mit_030, Mit_029c, Mit_029b, Mit_030_pre1, Mit_029a, Mit_029, Mit_029_pre1, Mit_028a, Mit_025c_branch0, HEAD
Branch point for: Mit_025c_branch
Changes since 1.1: +6 -7 lines
Log Message:
Backporting from 5x.

File Contents

# User Rev Content
1 paus 1.2 // $Id: FillerPsClusters.cc,v 1.1 2012/05/05 16:49:59 paus Exp $
2 paus 1.1
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    
15     using namespace std;
16     using namespace edm;
17     using namespace mithep;
18    
19     //--------------------------------------------------------------------------------------------------
20     FillerPsClusters::FillerPsClusters(const ParameterSet &cfg, const char *name, bool active) :
21 paus 1.2 BaseFiller (cfg,name,active),
22     edmName_ (Conf().getUntrackedParameter<string>("edmName","hybridSuperClusters")),
23     mitName_ (Conf().getUntrackedParameter<string>("mitName","PsClusters")),
24 paus 1.1 psClusterMapName_(Conf().getUntrackedParameter<string>("psClusterMapName",
25     "PsClusterMap")),
26 paus 1.2 psClusters_ (new mithep::PsClusterArr(100)),
27     psClusterMap_ (new mithep::PsClusterMap)
28 paus 1.1 {
29     // Constructor.
30     }
31    
32     //--------------------------------------------------------------------------------------------------
33     FillerPsClusters::~FillerPsClusters()
34     {
35     // Destructor.
36    
37     delete psClusters_;
38     delete psClusterMap_;
39     }
40    
41     //--------------------------------------------------------------------------------------------------
42     void FillerPsClusters::BookDataBlock(TreeWriter &tws)
43     {
44     // Add PsCluster branch and the PsClusterMap to tree.
45    
46     tws.AddBranch(mitName_,&psClusters_);
47     OS()->add<PsClusterArr>(psClusters_,mitName_);
48    
49     if (!psClusterMapName_.empty()) {
50     psClusterMap_->SetBrName(mitName_);
51     OS()->add<PsClusterMap>(psClusterMap_,psClusterMapName_);
52     }
53     }
54    
55     //--------------------------------------------------------------------------------------------------
56     void FillerPsClusters::FillDataBlock(const edm::Event &event,
57     const edm::EventSetup &setup)
58     {
59     // Fill the PsCluster information into our structures.
60    
61     psClusters_->Delete();
62     psClusterMap_->Reset();
63    
64     Handle<reco::PreshowerClusterCollection> hPsClusterProduct;
65     GetProduct(edmName_, hPsClusterProduct, event);
66     psClusterMap_->SetEdmProductId(hPsClusterProduct.id().id());
67     const reco::PreshowerClusterCollection &inPsClusters = *(hPsClusterProduct.product());
68    
69     // loop through all basic clusters
70     for (reco::PreshowerClusterCollection::const_iterator inBC = inPsClusters.begin();
71     inBC != inPsClusters.end(); ++inBC) {
72    
73     mithep::PsCluster *outPsCluster = psClusters_->Allocate();
74     new (outPsCluster) mithep::PsCluster();
75    
76     outPsCluster->SetXYZ(inBC->x(),inBC->y(),inBC->z());
77     outPsCluster->SetEnergy(inBC->energy());
78     outPsCluster->SetNHits(inBC->size());
79    
80     outPsCluster->SetPsPlane(inBC->plane());
81    
82     // add basic clusters to the map
83     reco::CaloClusterPtr thePtr(hPsClusterProduct, inBC-inPsClusters.begin());
84     psClusterMap_->Add(thePtr, outPsCluster);
85    
86     }
87     psClusters_->Trim();
88     }