95 #include "TObjString.h"
104 #include <ext/hash_map>
108 using namespace reco;
110 using namespace __gnu_cxx;
112 #define MAX_VERTICES 1000
113 #define MAX_HSCPS 10000
114 #define MAX_GENS 10000
115 #define MAX_ECALCRYS 10
126 virtual void endJob()
override ;
127 int ClosestMuonIndex(
reco::TrackRef track, std::vector<reco::MuonRef>);
143 bool Event_triggerL1Bits[192];
144 bool Event_triggerHLTBits[128];
145 bool Event_technicalBits[64];
267 m_gtReadoutRecordToken = consumes<L1GlobalTriggerReadoutRecord>(
InputTag(
"gtDigis"));
268 m_trToken = consumes<edm::TriggerResults>(
InputTag(
"TriggerResults"));
269 m_recoVertexToken = consumes<reco::VertexCollection>(
InputTag(
"offlinePrimaryVertices"));
270 m_genParticlesToken = mayConsume<GenParticleCollection>(
InputTag(
"genParticles"));
271 m_HSCPsToken = consumes<susybsm::HSCParticleCollection >(iConfig.
getParameter<
InputTag> (
"HSCParticles"));
276 std::cout <<
"######################################################" << endl;
277 std::cout <<
" USE OF THE HSCPTreeBuilder is deprecated! " << endl;
278 std::cout <<
"better to use the HSCParticle Producer and then FWLite" << endl;
279 std::cout <<
"######################################################" << endl;
291 TTree::SetMaxTreeSize(1000*Long64_t(2000000000));
292 MyTree = tfs->make<TTree> (
"HscpTree",
"HscpTree");
294 MyTree->Branch(
"Event_EventNumber" ,&Event_EventNumber ,
"Event_EventNumber/i");
295 MyTree->Branch(
"Event_RunNumber" ,&Event_RunNumber ,
"Event_RunNumber/i");
296 MyTree->Branch(
"Event_LumiSection" ,&Event_LumiSection ,
"Event_LumiSection/i");
297 MyTree->Branch(
"Event_BXCrossing" ,&Event_BXCrossing ,
"Event_BXCrossing/i");
298 MyTree->Branch(
"Event_Orbit" ,&Event_Orbit ,
"Event_Orbit/i");
299 MyTree->Branch(
"Event_Store" ,&Event_Store ,
"Event_Store/i");
300 MyTree->Branch(
"Event_Time" ,&Event_Time ,
"Event_Time/i");
301 MyTree->Branch(
"Event_PhysicsDeclared" ,&Event_PhysicsDeclared ,
"Event_PhysicsDeclared/O");
302 MyTree->Branch(
"Event_technicalBits" ,Event_technicalBits ,
"Event_technicalBits[64]/O");
303 MyTree->Branch(
"Event_triggerL1Bits" ,Event_triggerL1Bits ,
"Event_triggerL1Bits[192]/O");
304 MyTree->Branch(
"Event_triggerHLTBits" ,Event_triggerHLTBits ,
"Event_triggerHLTBits[128]/O");
305 MyTree->Branch(
"Event_BField" ,&Event_BField ,
"Event_BField/F");
307 if(reccordVertexInfo){
308 MyTree->Branch(
"NVertices" ,&NVertices ,
"NVertices/I");
309 MyTree->Branch(
"Vertex_x" ,Vertex_x ,
"Vertex_x[NVertices]/F");
310 MyTree->Branch(
"Vertex_y" ,Vertex_y ,
"Vertex_y[NVertices]/F");
311 MyTree->Branch(
"Vertex_z" ,Vertex_z ,
"Vertex_z[NVertices]/F");
312 MyTree->Branch(
"Vertex_x_err" ,Vertex_x_err ,
"Vertex_x_err[NVertices]/F");
313 MyTree->Branch(
"Vertex_y_err" ,Vertex_y_err ,
"Vertex_y_err[NVertices]/F");
314 MyTree->Branch(
"Vertex_z_err" ,Vertex_z_err ,
"Vertex_z_err[NVertices]/F");
315 MyTree->Branch(
"Vertex_TrackSize",Vertex_TrackSize,
"Vertex_TrackSize[NVertices]/I");
316 MyTree->Branch(
"Vertex_chi2" ,Vertex_chi2 ,
"Vertex_chi2[NVertices]/F");
317 MyTree->Branch(
"Vertex_ndof" ,Vertex_ndof ,
"Vertex_ndof[NVertices]/F");
318 MyTree->Branch(
"Vertex_isFake" ,Vertex_isFake ,
"Vertex_isFake[NVertices]/O");
321 MyTree->Branch(
"NHSCPs" ,&NHSCPs ,
"NHSCPs/I");
322 MyTree->Branch(
"Hscp_hasTrack" ,Hscp_hasTrack ,
"Hscp_hasTrack[NHSCPs]/O");
323 MyTree->Branch(
"Hscp_hasMuon" ,Hscp_hasMuon ,
"Hscp_hasMuon[NHSCPs]/O");
324 MyTree->Branch(
"Hscp_hasRpc" ,Hscp_hasRpc ,
"Hscp_hasRpc[NHSCPs]/O");
325 MyTree->Branch(
"Hscp_hasCalo" ,Hscp_hasCalo ,
"Hscp_hasCalo[NHSCPs]/O");
326 MyTree->Branch(
"Hscp_type" ,Hscp_type ,
"Hscp_type[NHSCPs]/I");
327 MyTree->Branch(
"Track_NOH" ,Track_NOH ,
"Track_NOH[NHSCPs]/I");
328 MyTree->Branch(
"Track_p" ,Track_p ,
"Track_p[NHSCPs]/F");
329 MyTree->Branch(
"Track_pt" ,Track_pt ,
"Track_pt[NHSCPs]/F");
330 MyTree->Branch(
"Track_pt_err" ,Track_pt_err ,
"Track_pt_err[NHSCPs]/F");
331 MyTree->Branch(
"Track_chi2" ,Track_chi2 ,
"Track_chi2[NHSCPs]/F");
332 MyTree->Branch(
"Track_ndof" ,Track_ndof ,
"Track_ndof[NHSCPs]/F");
333 MyTree->Branch(
"Track_eta" ,Track_eta ,
"Track_eta[NHSCPs]/F");
334 MyTree->Branch(
"Track_eta_err" ,Track_eta_err ,
"Track_eta_err[NHSCPs]/F");
335 MyTree->Branch(
"Track_phi" ,Track_phi ,
"Track_phi[NHSCPs]/F");
336 MyTree->Branch(
"Track_phi_err" ,Track_phi_err ,
"Track_phi_err[NHSCPs]/F");
337 MyTree->Branch(
"Track_d0" ,Track_d0 ,
"Track_d0[NHSCPs]/F");
338 MyTree->Branch(
"Track_dz" ,Track_dz ,
"Track_dz[NHSCPs]/F");
339 MyTree->Branch(
"Track_quality" ,Track_quality ,
"Track_quality[NHSCPs]/I");
340 MyTree->Branch(
"Track_charge" ,Track_charge ,
"Track_charge[NHSCPs]/I");
341 MyTree->Branch(
"Track_dEdxE1" ,Track_dEdxE1 ,
"Track_dEdxE1[NHSCPs]/F");
342 MyTree->Branch(
"Track_dEdxE1_NOS" ,Track_dEdxE1_NOS ,
"Track_dEdxE1_NOS[NHSCPs]/F");
343 MyTree->Branch(
"Track_dEdxE1_NOM" ,Track_dEdxE1_NOM ,
"Track_dEdxE1_NOM[NHSCPs]/I");
344 MyTree->Branch(
"Track_dEdxE2" ,Track_dEdxE2 ,
"Track_dEdxE2[NHSCPs]/F");
345 MyTree->Branch(
"Track_dEdxE2_NOS" ,Track_dEdxE2_NOS ,
"Track_dEdxE2_NOS[NHSCPs]/F");
346 MyTree->Branch(
"Track_dEdxE2_NOM" ,Track_dEdxE2_NOM ,
"Track_dEdxE2_NOM[NHSCPs]/I");
347 MyTree->Branch(
"Track_dEdxE3" ,Track_dEdxE3 ,
"Track_dEdxE3[NHSCPs]/F");
348 MyTree->Branch(
"Track_dEdxE3_NOS" ,Track_dEdxE3_NOS ,
"Track_dEdxE3_NOS[NHSCPs]/F");
349 MyTree->Branch(
"Track_dEdxE3_NOM" ,Track_dEdxE3_NOM ,
"Track_dEdxE3_NOM[NHSCPs]/I");
350 MyTree->Branch(
"Track_dEdxD1" ,Track_dEdxD1 ,
"Track_dEdxD1[NHSCPs]/F");
351 MyTree->Branch(
"Track_dEdxD1_NOS" ,Track_dEdxD1_NOS ,
"Track_dEdxD1_NOS[NHSCPs]/F");
352 MyTree->Branch(
"Track_dEdxD1_NOM" ,Track_dEdxD1_NOM ,
"Track_dEdxD1_NOM[NHSCPs]/I");
353 MyTree->Branch(
"Track_dEdxD2" ,Track_dEdxD2 ,
"Track_dEdxD2[NHSCPs]/F");
354 MyTree->Branch(
"Track_dEdxD2_NOS" ,Track_dEdxD2_NOS ,
"Track_dEdxD2_NOS[NHSCPs]/F");
355 MyTree->Branch(
"Track_dEdxD2_NOM" ,Track_dEdxD2_NOM ,
"Track_dEdxD2_NOM[NHSCPs]/I");
356 MyTree->Branch(
"Track_dEdxD3" ,Track_dEdxD3 ,
"Track_dEdxD3[NHSCPs]/F");
357 MyTree->Branch(
"Track_dEdxD3_NOS" ,Track_dEdxD3_NOS ,
"Track_dEdxD3_NOS[NHSCPs]/F");
358 MyTree->Branch(
"Track_dEdxD3_NOM" ,Track_dEdxD3_NOM ,
"Track_dEdxD3_NOM[NHSCPs]/I");
359 MyTree->Branch(
"Muon_p" ,Muon_p ,
"Muon_p[NHSCPs]/F");
360 MyTree->Branch(
"Muon_pt" ,Muon_pt ,
"Muon_pt[NHSCPs]/F");
361 MyTree->Branch(
"Muon_eta" ,Muon_eta ,
"Muon_eta[NHSCPs]/F");
362 MyTree->Branch(
"Muon_phi" ,Muon_phi ,
"Muon_phi[NHSCPs]/F");
363 MyTree->Branch(
"Muon_type" ,Muon_type ,
"Muon_type[NHSCPs]/i");
364 MyTree->Branch(
"Muon_qualityValid" ,Muon_qualityValid ,
"Muon_qualityValid[NHSCPs]/O");
365 MyTree->Branch(
"Muon_charge" ,Muon_charge ,
"Muon_charge[NHSCPs]/i");
366 MyTree->Branch(
"Muon_dt_IBeta" ,Muon_dt_IBeta ,
"Muon_dt_IBeta[NHSCPs]/F");
367 MyTree->Branch(
"Muon_dt_IBeta_err" ,Muon_dt_IBeta_err ,
"Muon_dt_IBeta_err[NHSCPs]/F");
368 MyTree->Branch(
"Muon_dt_fIBeta" ,Muon_dt_fIBeta ,
"Muon_dt_fIBeta[NHSCPs]/F");
369 MyTree->Branch(
"Muon_dt_fIBeta_err" ,Muon_dt_fIBeta_err ,
"Muon_dt_fIBeta_err[NHSCPs]/F");
370 MyTree->Branch(
"Muon_dt_ndof" ,Muon_dt_ndof ,
"Muon_dt_ndof[NHSCPs]/I");
371 MyTree->Branch(
"Muon_csc_IBeta" ,Muon_csc_IBeta ,
"Muon_csc_IBeta[NHSCPs]/F");
372 MyTree->Branch(
"Muon_csc_IBeta_err" ,Muon_csc_IBeta_err ,
"Muon_csc_IBeta_err[NHSCPs]/F");
373 MyTree->Branch(
"Muon_csc_fIBeta" ,Muon_csc_fIBeta ,
"Muon_csc_fIBeta[NHSCPs]/F");
374 MyTree->Branch(
"Muon_csc_fIBeta_err",Muon_csc_fIBeta_err,
"Muon_csc_fIBeta_err[NHSCPs]/F");
375 MyTree->Branch(
"Muon_csc_ndof" ,Muon_csc_ndof ,
"Muon_csc_ndof[NHSCPs]/I");
376 MyTree->Branch(
"Muon_cb_IBeta" ,Muon_cb_IBeta ,
"Muon_cb_IBeta[NHSCPs]/F");
377 MyTree->Branch(
"Muon_cb_IBeta_err" ,Muon_cb_IBeta_err ,
"Muon_cb_IBeta_err[NHSCPs]/F");
378 MyTree->Branch(
"Muon_cb_fIBeta" ,Muon_cb_fIBeta ,
"Muon_cb_fIBeta[NHSCPs]/F");
379 MyTree->Branch(
"Muon_cb_fIBeta_err" ,Muon_cb_fIBeta_err ,
"Muon_cb_fIBeta_err[NHSCPs]/F");
380 MyTree->Branch(
"Muon_cb_ndof" ,Muon_cb_ndof ,
"Muon_cb_ndof[NHSCPs]/I");
382 MyTree->Branch(
"Rpc_beta" ,Rpc_beta ,
"Rpc_beta[NHSCPs]/F");
384 MyTree->Branch(
"Calo_ecal_crossedE" ,Calo_ecal_crossedE ,
"Calo_ecal_crossedE[NHSCPs]/F");
385 MyTree->Branch(
"Calo_ecal_beta" ,Calo_ecal_beta ,
"Calo_ecal_beta[NHSCPs]/F");
386 MyTree->Branch(
"Calo_ecal_beta_err" ,Calo_ecal_beta_err ,
"Calo_ecal_beta_err[NHSCPs]/F");
387 MyTree->Branch(
"Calo_ecal_invBeta_err" ,Calo_ecal_invBeta_err ,
"Calo_ecal_invBeta_err[NHSCPs]/F");
388 MyTree->Branch(
"Calo_ecal_dEdx" ,Calo_ecal_dEdx ,
"Calo_ecal_dEdx[NHSCPs]/F");
389 MyTree->Branch(
"Calo_ecal_time" ,Calo_ecal_time ,
"Calo_ecal_time[NHSCPs]/F");
390 MyTree->Branch(
"Calo_ecal_time_err" ,Calo_ecal_time_err ,
"Calo_ecal_time_err[NHSCPs]/F");
391 MyTree->Branch(
"Calo_ecal_numCrysCrossed" ,Calo_ecal_numCrysCrossed,
"Calo_ecal_numCrysCrossed[NHSCPs]/I");
392 MyTree->Branch(
"Calo_ecal_swissCrossKs" ,Calo_ecal_swissCrossKs ,
"Calo_ecal_swissCrossKs[NHSCPs][10]/F");
393 MyTree->Branch(
"Calo_ecal_e1OverE9s" ,Calo_ecal_e1OverE9s ,
"Calo_ecal_e1OverE9s[NHSCPs][10]/F");
394 MyTree->Branch(
"Calo_ecal_trackLengths" ,Calo_ecal_trackLengths ,
"Calo_ecal_trackLengths[NHSCPs][10]/F");
395 MyTree->Branch(
"Calo_ecal_trackExitEtas" ,Calo_ecal_trackExitEtas ,
"Calo_ecal_trackExitEtas[NHSCPs][10]/F");
396 MyTree->Branch(
"Calo_ecal_trackExitPhis" ,Calo_ecal_trackExitPhis ,
"Calo_ecal_trackExitPhis[NHSCPs][10]/F");
397 MyTree->Branch(
"Calo_ecal_energies" ,Calo_ecal_energies ,
"Calo_ecal_energies[NHSCPs][10]/F");
398 MyTree->Branch(
"Calo_ecal_outOfTimeEnergies",Calo_ecal_outOfTimeEnergies ,
"Calo_ecal_outOfTimeEnergies[NHSCPs][10]/F");
399 MyTree->Branch(
"Calo_ecal_chi2s" ,Calo_ecal_chi2s ,
"Calo_ecal_chi2s[NHSCPs][10]/F");
400 MyTree->Branch(
"Calo_ecal_outOfTimeChi2s" ,Calo_ecal_outOfTimeChi2s ,
"Calo_ecal_outOfTimeChi2s[NHSCPs][10]/F");
401 MyTree->Branch(
"Calo_ecal_times" ,Calo_ecal_times ,
"Calo_ecal_times[NHSCPs][10]/F");
402 MyTree->Branch(
"Calo_ecal_timeErrors" ,Calo_ecal_timeErrors ,
"Calo_ecal_timeErrors[NHSCPs][10]/F");
403 MyTree->Branch(
"Calo_ecal_detIds" ,Calo_ecal_detIds ,
"Calo_ecal_detIds[NHSCPs][10]/I");
406 MyTree->Branch(
"NGens" ,&NGens ,
"NGens/I");
407 MyTree->Branch(
"Gen_pdgId" ,Gen_pdgId ,
"Gen_pdgId[NGens]/i");
408 MyTree->Branch(
"Gen_charge" ,Gen_charge ,
"Gen_charge[NGens]/F");
409 MyTree->Branch(
"Gen_p" ,Gen_p ,
"Gen_p[NGens]/F");
410 MyTree->Branch(
"Gen_px" ,Gen_px ,
"Gen_px[NGens]/F");
411 MyTree->Branch(
"Gen_py" ,Gen_py ,
"Gen_py[NGens]/F");
412 MyTree->Branch(
"Gen_pz" ,Gen_pz ,
"Gen_pz[NGens]/F");
413 MyTree->Branch(
"Gen_pt" ,Gen_pt ,
"Gen_pt[NGens]/F");
414 MyTree->Branch(
"Gen_eta" ,Gen_eta ,
"Gen_eta[NGens]/F");
415 MyTree->Branch(
"Gen_phi" ,Gen_phi ,
"Gen_phi[NGens]/F");
416 MyTree->Branch(
"Gen_beta" ,Gen_beta ,
"Gen_beta[NGens]/F");
417 MyTree->Branch(
"Gen_mass" ,Gen_mass ,
"Gen_mass[NGens]/F");
433 if (debug)
cout <<
"I'm in HSCPTreeBuilder::analyze!" << endl;
436 Event_EventNumber = iEvent.
id().
event();
437 Event_RunNumber = iEvent.
id().
run();
452 iEvent.
getByToken(m_gtReadoutRecordToken, h_gtReadoutRecord);
453 L1GtFdlWord fdlWord = h_gtReadoutRecord->gtFdlWord();
455 Event_PhysicsDeclared = h_gtReadoutRecord->gtFdlWord().physicsDeclared();
456 for (
unsigned int i = 0;
i < 64; ++
i){ Event_technicalBits [
i] = L1technical[
i]; }
458 for (
unsigned int i = 0;
i < 128; ++
i){ Event_triggerL1Bits [
i] = L1decision[
i]; }
460 for (
unsigned int i = 0;
i < 64; ++
i){ Event_triggerL1Bits [128+
i] = L1decisionE[
i]; }
465 for(
unsigned int i=0;
i<trh->size() &&
i<128;++
i){Event_triggerHLTBits[
i] = trh->at(
i).accept();}
468 iEvent.
getByToken(m_recoVertexToken, recoVertexHandle);
471 if(reccordVertexInfo){
473 for(
unsigned int i=0;
i<recoVertex.size();
i++){
474 Vertex_x [NVertices] = recoVertex[
i].x();
475 Vertex_y [NVertices] = recoVertex[
i].y();
476 Vertex_z [NVertices] = recoVertex[
i].z();
477 Vertex_x_err [NVertices] = recoVertex[
i].xError();
478 Vertex_y_err [NVertices] = recoVertex[
i].yError();
479 Vertex_z_err [NVertices] = recoVertex[
i].zError();
480 Vertex_TrackSize[NVertices] = recoVertex[
i].tracksSize();
481 Vertex_chi2 [NVertices] = recoVertex[
i].chi2();
482 Vertex_ndof [NVertices] = recoVertex[
i].ndof();
483 Vertex_isFake [NVertices] = recoVertex[
i].isFake();
490 iEvent.
getByToken(m_HSCPsToken, HSCPCollectionHandle);
494 for(
unsigned int i=0;
i<HSCPCollection.size();
i++){
503 Hscp_type [NHSCPs] = hscp.
type();
505 if(track.
isNonnull() && Hscp_hasTrack[NHSCPs]){
506 Track_p [NHSCPs] = track->p();
507 Track_pt [NHSCPs] = track->pt();
508 Track_pt_err [NHSCPs] = track->ptError();
509 Track_eta [NHSCPs] = track->eta();
510 Track_eta_err [NHSCPs] = track->etaError();
511 Track_phi [NHSCPs] = track->phi();
512 Track_phi_err [NHSCPs] = track->phiError();
513 Track_NOH [NHSCPs] = track->found();
514 Track_chi2 [NHSCPs] = track->chi2();
515 Track_ndof [NHSCPs] = track->ndof();
516 Track_d0 [NHSCPs] = -1.0f * track->dxy(recoVertex[0].
position());
517 Track_dz [NHSCPs] = -1.0f * track->dz (recoVertex[0].
position());
518 Track_quality [NHSCPs] = track->qualityMask();
519 Track_charge [NHSCPs] = track->charge();
541 if(muon.
isNonnull() && Hscp_hasMuon[NHSCPs]){
542 Muon_p [NHSCPs] = muon->p();
543 Muon_pt [NHSCPs] = muon->pt();
544 Muon_eta [NHSCPs] = muon->eta();
545 Muon_phi [NHSCPs] = muon->phi();
546 Muon_type [NHSCPs] = muon->type();
547 Muon_qualityValid [NHSCPs] = muon->isQualityValid();
548 Muon_charge [NHSCPs] = muon->charge();
595 if(Hscp_hasRpc[NHSCPs]){
596 Rpc_beta [NHSCPs] = hscp.
rpc().
beta;
605 iEvent.
getByToken(m_genParticlesToken, genParticles);
607 for(
unsigned int i=0;
i<genParticles->size();
i++){
609 if(part.
status()!=1)
continue;
610 if(part.
pt()<5)
continue;
613 Gen_pdgId [NGens] = part.
pdgId();
614 Gen_charge[NGens] = part.
charge();
615 Gen_p [NGens] = part.
p();
616 Gen_px [NGens] = part.
px();
617 Gen_py [NGens] = part.
py();
618 Gen_pz [NGens] = part.
pz();
619 Gen_pt [NGens] = part.
pt();
620 Gen_eta [NGens] = part.
eta();
621 Gen_phi [NGens] = part.
phi();
622 Gen_beta [NGens] = part.
p()/part.
energy();
623 Gen_mass [NGens] = part.
mass();
unsigned int Event_LumiSection
T getParameter(std::string const &) const
EventNumber_t event() const
T getUntrackedParameter(std::string const &, T const &) const
virtual int pdgId() const
PDG identifier.
const TechnicalTriggerWord & gtTechnicalTriggerWord() const
get/set technical trigger bits
virtual double p() const
magnitude of momentum vector
bool isNonnull() const
Checks for non-null.
const RPCBetaMeasurement & rpc() const
bool getByToken(EDGetToken token, Handle< PROD > &result) const
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
#define DEFINE_FWK_MODULE(type)
virtual int status() const
status word
Timestamp const & time() const
unsigned int Event_BXCrossing
std::vector< Vertex > VertexCollection
collection of Vertex objects
virtual void beginJob() override
int bunchCrossing() const
virtual double eta() const
momentum pseudorapidity
virtual double pt() const
transverse momentum
HSCPTreeBuilder(const edm::ParameterSet &)
bool Event_PhysicsDeclared
LuminosityBlockNumber_t luminosityBlock() const
virtual bool filter(edm::Event &, const edm::EventSetup &) override
std::vector< bool > DecisionWordExtended
virtual double mass() const
mass
virtual double energy() const
energy
std::vector< HSCParticle > HSCParticleCollection
unsigned int Event_EventNumber
std::vector< bool > DecisionWord
typedefs
virtual int charge() const
electric charge
EDGetTokenT< L1GlobalTriggerReadoutRecord > m_gtReadoutRecordToken
std::vector< bool > TechnicalTriggerWord
technical trigger bits (64 bits)
const edm::EventSetup * iSetup_
const edm::Event * iEvent_
EventAuxiliary const & eventAuxiliary() const
reco::MuonRef muonRef() const
EDGetTokenT< GenParticleCollection > m_genParticlesToken
EDGetTokenT< edm::TriggerResults > m_trToken
T const * product() const
virtual double px() const
x coordinate of momentum vector
T const * product() const
const DecisionWord & gtDecisionWord() const
get/set/print algorithms bits (decision word)
virtual double pz() const
z coordinate of momentum vector
reco::TrackRef trackRef() const
static int position[264][3]
virtual void endJob() override
volatile std::atomic< bool > shutdown_flag false
const DecisionWordExtended & gtDecisionWordExtended() const
get/set extended algorithms bits (extended decision word)
edm::Service< TFileService > tfs
EDGetTokenT< reco::VertexCollection > m_recoVertexToken
virtual double phi() const
momentum azimuthal angle
TimeValue_t value() const
virtual double py() const
y coordinate of momentum vector
EDGetTokenT< susybsm::HSCParticleCollection > m_HSCPsToken
unsigned int Event_RunNumber