64 |
|
|
65 |
|
using namespace std; |
66 |
|
|
67 |
< |
#define MAXHITS 100000 |
67 |
> |
#define MAXHITS 1000000 |
68 |
|
|
69 |
|
struct MyRecHit{ |
70 |
|
|
74 |
|
float et[MAXHITS]; |
75 |
|
float eta[MAXHITS]; |
76 |
|
float phi[MAXHITS]; |
77 |
+ |
bool isjet[MAXHITS]; |
78 |
|
|
79 |
|
}; |
80 |
|
|
100 |
|
|
101 |
|
// ----------member data --------------------------- |
102 |
|
|
102 |
– |
|
103 |
|
edm::Handle<reco::Centrality> cent; |
104 |
|
edm::Handle<vector<double> > ktRhos; |
105 |
|
edm::Handle<vector<double> > akRhos; |
110 |
|
edm::Handle<HFRecHitCollection> hfHits; |
111 |
|
edm::Handle<HBHERecHitCollection> hbheHits; |
112 |
|
|
113 |
< |
typedef vector<EcalRecHit>::const_iterator EcalIterator; |
114 |
< |
|
115 |
< |
edm::Handle<reco::CaloJetCollection> signalJets; |
116 |
< |
|
113 |
> |
typedef vector<EcalRecHit>::const_iterator EcalIterator; |
114 |
> |
|
115 |
> |
edm::Handle<reco::CaloJetCollection> jets; |
116 |
> |
|
117 |
|
MyRecHit hbheRecHit; |
118 |
|
MyRecHit hfRecHit; |
119 |
|
MyRecHit ebRecHit; |
133 |
|
edm::InputTag HcalRecHitHBHESrc_; |
134 |
|
edm::InputTag EBSrc_; |
135 |
|
edm::InputTag EESrc_; |
136 |
< |
|
136 |
> |
edm::InputTag JetSrc_; |
137 |
> |
bool excludeJets_; |
138 |
|
|
139 |
|
}; |
140 |
|
|
160 |
|
EESrc_ = iConfig.getUntrackedParameter<edm::InputTag>("EERecHitSrc",edm::InputTag("ecalRecHit","EcalRecHitsEE")); |
161 |
|
HcalRecHitHFSrc_ = iConfig.getUntrackedParameter<edm::InputTag>("hcalHFRecHitSrc",edm::InputTag("hfreco")); |
162 |
|
HcalRecHitHBHESrc_ = iConfig.getUntrackedParameter<edm::InputTag>("hcalHBHERecHitSrc",edm::InputTag("hbhereco")); |
163 |
+ |
JetSrc_ = iConfig.getUntrackedParameter<edm::InputTag>("JetSrc",edm::InputTag("iterativeCone5CaloJets")); |
164 |
+ |
excludeJets_ = iConfig.getUntrackedParameter<bool>("excludeJets",false); |
165 |
|
} |
166 |
|
|
167 |
|
|
194 |
|
ev.getByLabel(HcalRecHitHFSrc_,hfHits); |
195 |
|
ev.getByLabel(HcalRecHitHBHESrc_,hbheHits); |
196 |
|
|
197 |
+ |
|
198 |
+ |
if(!excludeJets_) { |
199 |
+ |
ev.getByLabel(JetSrc_,jets); |
200 |
+ |
} |
201 |
+ |
|
202 |
|
if(0 && !cbins_) cbins_ = getCentralityBinsFromDB(iSetup); |
203 |
|
|
204 |
|
if(!geo){ |
206 |
|
iSetup.get<CaloGeometryRecord>().get(pGeo); |
207 |
|
geo = pGeo.product(); |
208 |
|
} |
209 |
< |
|
209 |
> |
|
210 |
|
for(unsigned int i = 0; i < hfHits->size(); ++i){ |
211 |
|
const HFRecHit & hit= (*hfHits)[i]; |
212 |
|
hfRecHit.e[hfRecHit.n] = hit.energy(); |
213 |
|
hfRecHit.et[hfRecHit.n] = getEt(hit.id(),hit.energy()); |
214 |
|
hfRecHit.eta[hfRecHit.n] = getEta(hit.id()); |
215 |
|
hfRecHit.phi[hfRecHit.n] = getPhi(hit.id()); |
216 |
+ |
hfRecHit.isjet[hfRecHit.n] = false; |
217 |
+ |
if(!excludeJets_){ |
218 |
+ |
for(unsigned int j = 0 ; j < jets->size(); ++j){ |
219 |
+ |
const reco::Jet& jet = (*jets)[j]; |
220 |
+ |
double dr = reco::deltaR(hfRecHit.eta[hfRecHit.n],hfRecHit.phi[hfRecHit.n],jet.eta(),jet.phi()); |
221 |
+ |
if(dr < cone){ hfRecHit.isjet[hfRecHit.n] = true; } |
222 |
+ |
} |
223 |
+ |
} |
224 |
|
hfRecHit.n++; |
225 |
|
} |
226 |
< |
|
226 |
> |
|
227 |
|
for(unsigned int i = 0; i < hbheHits->size(); ++i){ |
228 |
|
const HBHERecHit & hit= (*hbheHits)[i]; |
229 |
< |
hbheRecHit.e[hfRecHit.n] = hit.energy(); |
230 |
< |
hbheRecHit.et[hfRecHit.n] = getEt(hit.id(),hit.energy()); |
231 |
< |
hbheRecHit.eta[hfRecHit.n] = getEta(hit.id()); |
232 |
< |
hbheRecHit.phi[hfRecHit.n] = getPhi(hit.id()); |
229 |
> |
hbheRecHit.e[hbheRecHit.n] = hit.energy(); |
230 |
> |
hbheRecHit.et[hbheRecHit.n] = getEt(hit.id(),hit.energy()); |
231 |
> |
hbheRecHit.eta[hbheRecHit.n] = getEta(hit.id()); |
232 |
> |
hbheRecHit.phi[hbheRecHit.n] = getPhi(hit.id()); |
233 |
> |
hbheRecHit.isjet[hbheRecHit.n] = false; |
234 |
> |
if(!excludeJets_){ |
235 |
> |
for(unsigned int j = 0 ; j < jets->size(); ++j){ |
236 |
> |
const reco::Jet& jet = (*jets)[j]; |
237 |
> |
double dr = reco::deltaR(hbheRecHit.eta[hbheRecHit.n],hbheRecHit.phi[hbheRecHit.n],jet.eta(),jet.phi()); |
238 |
> |
if(dr < cone){ hbheRecHit.isjet[hbheRecHit.n] = true; } |
239 |
> |
} |
240 |
> |
} |
241 |
|
hbheRecHit.n++; |
242 |
|
} |
243 |
< |
|
243 |
> |
|
244 |
|
for(unsigned int i = 0; i < ebHits->size(); ++i){ |
245 |
|
const EcalRecHit & hit= (*ebHits)[i]; |
246 |
|
ebRecHit.e[ebRecHit.n] = hit.energy(); |
247 |
|
ebRecHit.et[ebRecHit.n] = getEt(hit.id(),hit.energy()); |
248 |
|
ebRecHit.eta[ebRecHit.n] = getEta(hit.id()); |
249 |
|
ebRecHit.phi[ebRecHit.n] = getPhi(hit.id()); |
250 |
+ |
ebRecHit.isjet[ebRecHit.n] = false; |
251 |
+ |
if(!excludeJets_){ |
252 |
+ |
for(unsigned int j = 0 ; j < jets->size(); ++j){ |
253 |
+ |
const reco::Jet& jet = (*jets)[j]; |
254 |
+ |
double dr = reco::deltaR(ebRecHit.eta[ebRecHit.n],ebRecHit.phi[ebRecHit.n],jet.eta(),jet.phi()); |
255 |
+ |
if(dr < cone){ ebRecHit.isjet[ebRecHit.n] = true; } |
256 |
+ |
} |
257 |
+ |
} |
258 |
|
ebRecHit.n++; |
259 |
|
} |
260 |
< |
|
260 |
> |
|
261 |
|
for(unsigned int i = 0; i < eeHits->size(); ++i){ |
262 |
|
const EcalRecHit & hit= (*eeHits)[i]; |
263 |
|
eeRecHit.e[eeRecHit.n] = hit.energy(); |
264 |
|
eeRecHit.et[eeRecHit.n] = getEt(hit.id(),hit.energy()); |
265 |
|
eeRecHit.eta[eeRecHit.n] = getEta(hit.id()); |
266 |
|
eeRecHit.phi[eeRecHit.n] = getPhi(hit.id()); |
267 |
+ |
eeRecHit.isjet[eeRecHit.n] = false; |
268 |
+ |
if(!excludeJets_){ |
269 |
+ |
for(unsigned int j = 0 ; j < jets->size(); ++j){ |
270 |
+ |
const reco::Jet& jet = (*jets)[j]; |
271 |
+ |
double dr = reco::deltaR(eeRecHit.eta[eeRecHit.n],eeRecHit.phi[eeRecHit.n],jet.eta(),jet.phi()); |
272 |
+ |
if(dr < cone){ eeRecHit.isjet[eeRecHit.n] = true; } |
273 |
+ |
} |
274 |
+ |
} |
275 |
|
eeRecHit.n++; |
276 |
|
} |
277 |
< |
|
277 |
> |
|
278 |
|
eeTree->Fill(); |
279 |
|
ebTree->Fill(); |
280 |
< |
|
280 |
> |
|
281 |
|
hbheTree->Fill(); |
282 |
|
hfTree->Fill(); |
283 |
< |
|
283 |
> |
|
284 |
|
} |
285 |
|
|
286 |
|
|
288 |
|
void |
289 |
|
RecHitTreeProducer::beginJob() |
290 |
|
{ |
291 |
< |
|
291 |
> |
|
292 |
|
hbheTree = fs->make<TTree>("hbhe",""); |
293 |
|
hbheTree->Branch("n",&hbheRecHit.n,"n/I"); |
294 |
|
hbheTree->Branch("e",hbheRecHit.e,"e[n]/F"); |
295 |
|
hbheTree->Branch("et",hbheRecHit.et,"et[n]/F"); |
296 |
|
hbheTree->Branch("eta",hbheRecHit.eta,"eta[n]/F"); |
297 |
|
hbheTree->Branch("phi",hbheRecHit.phi,"phi[n]/F"); |
298 |
< |
|
298 |
> |
hbheTree->Branch("isjet",hbheRecHit.isjet,"isjet[n]/I"); |
299 |
> |
|
300 |
|
hfTree = fs->make<TTree>("hf",""); |
301 |
|
hfTree->Branch("n",&hfRecHit.n,"n/I"); |
302 |
|
hfTree->Branch("e",hfRecHit.e,"e[n]/F"); |
303 |
|
hfTree->Branch("et",hfRecHit.et,"et[n]/F"); |
304 |
|
hfTree->Branch("eta",hfRecHit.eta,"eta[n]/F"); |
305 |
|
hfTree->Branch("phi",hfRecHit.phi,"phi[n]/F"); |
306 |
+ |
hfTree->Branch("isjet",hfRecHit.isjet,"isjet[n]/I"); |
307 |
|
|
308 |
|
eeTree = fs->make<TTree>("ee",""); |
309 |
|
eeTree->Branch("n",&eeRecHit.n,"n/I"); |
311 |
|
eeTree->Branch("et",eeRecHit.et,"et[n]/F"); |
312 |
|
eeTree->Branch("eta",eeRecHit.eta,"eta[n]/F"); |
313 |
|
eeTree->Branch("phi",eeRecHit.phi,"phi[n]/F"); |
314 |
< |
|
314 |
> |
eeTree->Branch("isjet",eeRecHit.isjet,"isjet[n]/I"); |
315 |
> |
|
316 |
|
ebTree = fs->make<TTree>("eb",""); |
317 |
|
ebTree->Branch("n",&ebRecHit.n,"n/I"); |
318 |
|
ebTree->Branch("e",ebRecHit.e,"e[n]/F"); |
319 |
|
ebTree->Branch("et",ebRecHit.et,"et[n]/F"); |
320 |
|
ebTree->Branch("eta",ebRecHit.eta,"eta[n]/F"); |
321 |
|
ebTree->Branch("phi",ebRecHit.phi,"phi[n]/F"); |
322 |
+ |
ebTree->Branch("isjet",ebRecHit.isjet,"isjet[n]/I"); |
323 |
|
|
324 |
|
} |
325 |
|
|
333 |
|
double et = energy*sin(pos.theta()); |
334 |
|
return et; |
335 |
|
} |
336 |
< |
|
336 |
> |
|
337 |
|
double RecHitTreeProducer::getEta(const DetId &id){ |
338 |
|
const GlobalPoint& pos=geo->getPosition(id); |
339 |
|
double et = pos.eta(); |