ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerSuperClusters.cc
Revision: 1.2
Committed: Mon Nov 3 11:22:35 2008 UTC (16 years, 6 months ago) by bendavid
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_006b, Mit_006a, Mit_006
Changes since 1.1: +16 -2 lines
Log Message:
Added propagation of tracks to ecal for position and supercluster links

File Contents

# User Rev Content
1 bendavid 1.2 // $Id: FillerSuperClusters.cc,v 1.1 2008/08/08 11:12:38 sixie Exp $
2 sixie 1.1
3     #include "MitProd/TreeFiller/interface/FillerSuperClusters.h"
4     #include "FWCore/MessageLogger/interface/MessageLogger.h"
5     #include "DataFormats/Common/interface/Handle.h"
6     #include "DataFormats/EgammaReco/interface/SuperClusterFwd.h"
7     #include "DataFormats/EgammaReco/interface/SuperCluster.h"
8     #include "MitAna/DataTree/interface/BasicCluster.h"
9     #include "MitAna/DataTree/interface/SuperCluster.h"
10     #include "MitAna/DataTree/interface/Names.h"
11    
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     "SuperClusterIdMap")),
27 sixie 1.1 basicClusterMap_(0),
28     superClusters_(new mithep::SuperClusterArr(25)),
29 bendavid 1.2 superClusterMap_(new mithep::SuperClusterMap),
30     superClusterIdMap_(new mithep::SuperClusterIdMap)
31 sixie 1.1 {
32     // Constructor.
33     }
34    
35     //--------------------------------------------------------------------------------------------------
36     FillerSuperClusters::~FillerSuperClusters()
37     {
38     // Destructor.
39    
40     delete superClusters_;
41     delete superClusterMap_;
42 bendavid 1.2 delete superClusterIdMap_;
43 sixie 1.1 }
44    
45     //--------------------------------------------------------------------------------------------------
46     void FillerSuperClusters::BookDataBlock(TreeWriter &tws)
47     {
48     // Load the BasicClusters and Add SuperClusters branch and the SuperClusterMap to tree.
49     tws.AddBranch(mitName_.c_str(),&superClusters_);
50     if (!basicClusterMapName_.empty())
51     basicClusterMap_ = OS()->get<BasicClusterMap>(basicClusterMapName_.c_str());
52    
53     OS()->add<SuperClusterMap>(superClusterMap_,superClusterMapName_.c_str());
54 bendavid 1.2 OS()->add<SuperClusterIdMap>(superClusterIdMap_,superClusterIdMapName_.c_str());
55 sixie 1.1 OS()->add<SuperClusterArr>(superClusters_,mitName_.c_str());
56     }
57    
58     //--------------------------------------------------------------------------------------------------
59     void FillerSuperClusters::FillDataBlock(const edm::Event &event,
60     const edm::EventSetup &setup)
61     {
62     //Fill The SuperCluster DataBlock
63     superClusters_->Reset();
64     superClusterMap_->Reset();
65 bendavid 1.2 superClusterIdMap_->Reset();
66 sixie 1.1
67     Handle<reco::SuperClusterCollection> hSuperClusterProduct;
68     GetProduct(edmName_, hSuperClusterProduct, event);
69     superClusterMap_->SetEdmProductId(hSuperClusterProduct.id().id());
70     const reco::SuperClusterCollection inSuperClusters = *(hSuperClusterProduct.product());
71    
72     // loop through all super clusters
73     for (reco::SuperClusterCollection::const_iterator inSC = inSuperClusters.begin();
74     inSC != inSuperClusters.end(); ++inSC) {
75    
76     mithep::SuperCluster *outSC = superClusters_->Allocate();
77     new (outSC) mithep::SuperCluster();
78    
79     outSC->SetXYZ(inSC->x(),inSC->y(),inSC->z());
80     outSC->SetEnergy(inSC->energy());
81     outSC->SetRawEnergy(inSC->rawEnergy());
82     outSC->SetPreshowerEnergy(inSC->preshowerEnergy());
83     outSC->SetPhiWidth(inSC->phiWidth());
84     outSC->SetEtaWidth(inSC->etaWidth());
85    
86     //set the seed
87     if (basicClusterMap_ && inSC->seed().isNonnull())
88     outSC->SetSeed(basicClusterMap_->GetMit(inSC->seed()));
89    
90     //Add Basic Clusters that belong to this super cluster
91     for(reco::basicCluster_iterator bc = inSC->clustersBegin(); bc != inSC->clustersEnd(); ++bc) {
92     if (basicClusterMap_ && bc->isNonnull())
93     outSC->AddCluster(basicClusterMap_->GetMit(*bc));
94     }
95    
96     //Add super cluster to the map
97     reco::SuperClusterRef theRef(hSuperClusterProduct, inSC-inSuperClusters.begin());
98     superClusterMap_->Add(theRef, outSC);
99    
100 bendavid 1.2 //Add super cluster det ids to the id map
101     std::vector<DetId> hits = inSC->getHitsByDetId();
102     for (std::vector<DetId>::const_iterator ihit = hits.begin();
103     ihit < hits.end(); ++ihit) {
104    
105     superClusterIdMap_->Add(*ihit,outSC);
106     }
107    
108 sixie 1.1 }
109    
110     superClusters_->Trim();
111     }