15 hbheToken_= mayConsume<HBHERecHitCollection>(
edm::InputTag(hbheLabel_));
16 hoToken_=mayConsume<HORecHitCollection>(
edm::InputTag(hoLabel_));
17 hfToken_=mayConsume<HFRecHitCollection>(
edm::InputTag(hfLabel_));
35 hOutputFile =
new TFile( fOutputFileName.c_str(),
"RECREATE" ) ;
36 myTree =
new TTree(
"RecJet",
"RecJet Tree");
37 myTree->Branch(
"mydet", &mydet,
"mydet/I");
38 myTree->Branch(
"mysubd", &mysubd,
"mysubd/I");
39 myTree->Branch(
"depth", &
depth,
"depth/I");
40 myTree->Branch(
"ieta", &ieta,
"ieta/I");
41 myTree->Branch(
"iphi", &iphi,
"iphi/I");
42 myTree->Branch(
"eta", &
eta,
"eta/F");
43 myTree->Branch(
"phi", &
phi,
"phi/F");
44 myTree->Branch(
"mom1", &mom1,
"mom1/F");
45 myTree->Branch(
"mom2", &mom2,
"mom2/F");
46 myTree->Branch(
"mom3", &mom3,
"mom3/F");
47 myTree->Branch(
"mom4", &mom4,
"mom4/F");
53 void MinBias::endJob()
56 const std::vector<DetId>& did = geo->getSubdetectorGeometry(
DetId::Hcal, 1 )->getValidDetIds() ;
58 for(std::vector<DetId>::const_iterator
id=did.begin();
id != did.end();
id++)
62 mydet = ((*id).rawId()>>28)&0xF;
63 mysubd = ((*id).rawId()>>25)&0x7;
69 if ( theFillDetMap0[*
id] > 0. )
71 mom1 = theFillDetMap1[*id]/theFillDetMap0[*id];
72 mom2 = theFillDetMap2[*id]/theFillDetMap0[*id]-(mom1*mom1);
73 mom3 = theFillDetMap3[*id]/theFillDetMap0[*id]-3.*mom1*theFillDetMap2[*id]/theFillDetMap0[*id]+
75 mom4 = (theFillDetMap4[*id]-4.*mom1*theFillDetMap3[*id]+6.*
pow(mom1,2)*theFillDetMap2[*id])/theFillDetMap0[*
id]-3.*
pow(mom1,4);
79 mom1 = 0.; mom2 = 0.; mom3 = 0.; mom4 = 0.;
81 std::cout<<
" Detector "<<(*id).rawId()<<
" mydet "<<mydet<<
" "<<mysubd<<
" "<<
depth<<
" "<<
83 std::cout<<
" Energy "<<mom1<<
" "<<mom2<<std::endl;
88 std::cout<<
" The number of CaloDet records "<<did.size()<<std::endl;
89 std::cout<<
" The number of Hcal records "<<i<<std::endl;
92 std::cout <<
"===== Start writing user histograms =====" << std::endl;
93 hOutputFile->SetCompressionLevel(2);
96 hOutputFile->Close() ;
97 std::cout <<
"===== End writing user histograms =======" << std::endl;
115 std::vector<DetId> did = geo->getValidDetIds();
117 for(std::vector<DetId>::const_iterator
id=did.begin();
id != did.end();
id++)
120 theFillDetMap0[*id] = 0.;
121 theFillDetMap1[*id] = 0.;
122 theFillDetMap2[*id] = 0.;
123 theFillDetMap3[*id] = 0.;
124 theFillDetMap4[*id] = 0.;
131 if (!hbheLabel_.empty()) {
136 if (!allowMissingInputs_) {
141 hbheItr != (*hbhe).end(); ++hbheItr)
143 DetId id = (hbheItr)->detid();
144 if( (*hbheItr).energy() > 0. )
std::cout<<
" Energy = "<<(*hbheItr).energy()<<std::endl;
145 theFillDetMap0[id] = theFillDetMap0[id]+ 1.;
146 theFillDetMap1[id] = theFillDetMap1[id]+(*hbheItr).energy();
147 theFillDetMap2[id] = theFillDetMap2[id]+
pow((*hbheItr).energy(),2);
148 theFillDetMap3[id] = theFillDetMap3[id]+
pow((*hbheItr).energy(),3);
149 theFillDetMap4[id] = theFillDetMap4[id]+
pow((*hbheItr).energy(),4);
154 if (!hoLabel_.empty()) {
159 if (!allowMissingInputs_) {
164 hoItr != (*ho).end(); ++hoItr)
166 DetId id = (hoItr)->detid();
167 theFillDetMap0[id] = theFillDetMap0[id]+ 1.;
168 theFillDetMap1[id] = theFillDetMap1[id]+(*hoItr).energy();
169 theFillDetMap2[id] = theFillDetMap2[id]+
pow((*hoItr).energy(),2);
170 theFillDetMap3[id] = theFillDetMap3[id]+
pow((*hoItr).energy(),3);
171 theFillDetMap4[id] = theFillDetMap4[id]+
pow((*hoItr).energy(),4);
176 if (!hfLabel_.empty()) {
181 if (!allowMissingInputs_) {
186 hfItr != (*hf).end(); ++hfItr)
188 DetId id = (hfItr)->detid();
189 theFillDetMap0[id] = theFillDetMap0[id]+ 1.;
190 theFillDetMap1[id] = theFillDetMap1[id]+(*hfItr).energy();
191 theFillDetMap2[id] = theFillDetMap2[id]+
pow((*hfItr).energy(),2);
192 theFillDetMap3[id] = theFillDetMap3[id]+
pow((*hfItr).energy(),3);
193 theFillDetMap4[id] = theFillDetMap4[id]+
pow((*hfItr).energy(),4);
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
HcalSubdetector subdet() const
get the subdetector
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Geom::Phi< T > phi() const
std::vector< HBHERecHit >::const_iterator const_iterator
int depth() const
get the tower depth
int ieta() const
get the cell ieta
int iphi() const
get the cell iphi
T const * product() const
Geom::Phi< T > phi() const
Power< A, B >::type pow(const A &a, const B &b)