11 #include "TDirectory.h"
14 #include "TLorentzVector.h"
15 #include "TInterpreter.h"
130 usesResource(
"TFileService");
132 const double isolationRadius(28.9);
190 << isQCD_ <<
"\t isAOD " <<
isAOD_;
191 edm::LogVerbatim(
"IsoTrack") << trigNames_.size() <<
" triggers to be studied:";
192 for (
unsigned int k = 0;
k < trigNames_.size(); ++
k)
196 tok_geom_ = esConsumes<CaloGeometry, CaloGeometryRecord>();
197 tok_magField_ = esConsumes<MagneticField, IdealMagneticFieldRecord>();
211 <<
" starts ==========";
239 if (!recVtxs->empty() && !((*recVtxs)[0].isFake())) {
240 leadPV =
math::XYZPoint((*recVtxs)[0].
x(), (*recVtxs)[0].
y(), (*recVtxs)[0].
z());
241 }
else if (beamSpotH.
isValid()) {
242 leadPV = beamSpotH->position();
259 bool triggerOK =
false;
266 if (!triggerEventHandle.
isValid()) {
272 if (triggerResults.
isValid()) {
274 const std::vector<std::string> &triggerNames_ = triggerNames.
triggerNames();
275 for (
unsigned int iHLT = 0; iHLT < triggerResults->size(); iHLT++) {
276 int hlt = triggerResults->accept(iHLT);
283 <<
"This is the trigger we are looking for " << triggerNames_[iHLT] <<
" Flag " <<
hlt;
294 std::vector<spr::propagatedTrackDirection> trkCaloDirections;
297 std::vector<spr::propagatedTrackDirection>::const_iterator trkDetItr;
298 unsigned int nTracks(0), nselTracks(0);
299 t_nTrk = trkCaloDirections.size();
301 for (trkDetItr = trkCaloDirections.begin(),
nTracks = 0; trkDetItr != trkCaloDirections.end();
303 const reco::Track *pTrack = &(*(trkDetItr->trkItr));
306 << pTrack->
eta() <<
"/" << pTrack->
phi() <<
"/" << pTrack->
p();
309 if (trkDetItr->okHCAL) {
321 oneCutParameters.
maxDzPV = 100;
327 oneCutParameters.
maxDzPV = 100;
335 edm::LogVerbatim(
"IsoTrack") <<
"qltyFlag|okECAL|okHCAL : " << qltyFlag <<
"|" << trkDetItr->okECAL <<
"/"
336 << trkDetItr->okHCAL;
337 if (qltyFlag && trkDetItr->okECAL && trkDetItr->okHCAL) {
339 int nRH_eMipDR(0), nNearTRKs(0);
344 trkDetItr->pointHCAL,
345 trkDetItr->pointECAL,
347 trkDetItr->directionECAL,
362 int nRecHits(-999), nRecHits1(-999), nRecHits3(-999);
363 std::vector<DetId> ids, ids1, ids3;
367 trkDetItr->pointHCAL,
368 trkDetItr->pointECAL,
370 trkDetItr->directionHCAL,
375 for (
unsigned int k = 0;
k < ids.size(); ++
k) {
381 trkDetItr->pointHCAL,
382 trkDetItr->pointECAL,
384 trkDetItr->directionHCAL,
389 for (
unsigned int k = 0;
k < ids1.size(); ++
k) {
395 trkDetItr->pointHCAL,
396 trkDetItr->pointECAL,
398 trkDetItr->directionHCAL,
403 for (
unsigned int k = 0;
k < ids3.size(); ++
k) {
412 << pTrack->
eta() <<
"/" << pTrack->
phi() <<
"/" <<
t_p;
416 for (
unsigned int lll = 0; lll <
t_DetIds->size(); lll++) {
436 tree->Branch(
"t_Run", &
t_Run,
"t_Run/I");
437 tree->Branch(
"t_Event", &
t_Event,
"t_Event/I");
438 tree->Branch(
"t_nVtx", &
t_nVtx,
"t_nVtx/I");
439 tree->Branch(
"t_nTrk", &
t_nTrk,
"t_nTrk/I");
440 tree->Branch(
"t_EventWeight", &
t_EventWeight,
"t_EventWeight/D");
441 tree->Branch(
"t_p", &
t_p,
"t_p/D");
442 tree->Branch(
"t_pt", &
t_pt,
"t_pt/D");
443 tree->Branch(
"t_ieta", &
t_ieta,
"t_ieta/I");
444 tree->Branch(
"t_phi", &
t_phi,
"t_phi/D");
445 tree->Branch(
"t_eMipDR", &
t_eMipDR,
"t_eMipDR/D");
446 tree->Branch(
"t_eHcal", &
t_eHcal,
"t_eHcal/D");
447 tree->Branch(
"t_eHcal10", &
t_eHcal10,
"t_eHcal10/D");
448 tree->Branch(
"t_eHcal30", &
t_eHcal30,
"t_eHcal30/D");
449 tree->Branch(
"t_hmaxNearP", &
t_hmaxNearP,
"t_hmaxNearP/D");
450 tree->Branch(
"t_selectTk", &
t_selectTk,
"t_selectTk/O");
451 tree->Branch(
"t_qltyMissFlag", &
t_qltyMissFlag,
"t_qltyMissFlag/O");
452 tree->Branch(
"t_qltyPVFlag", &
t_qltyPVFlag,
"t_qltyPVFlag/O)");
454 t_DetIds =
new std::vector<unsigned int>();
455 t_DetIds1 =
new std::vector<unsigned int>();
456 t_DetIds3 =
new std::vector<unsigned int>();
461 tree->Branch(
"t_DetIds",
"std::vector<unsigned int>", &
t_DetIds);
464 tree->Branch(
"t_HitEnergies",
"std::vector<double>", &t_HitEnergies);
473 edm::LogInfo(
"HcalIsoTrack") <<
"Run[" <<
nRun_ <<
"] " << iRun.
run() <<
" process HLT init flag " << flag
474 <<
" change flag " << changed_;
478 edm::LogInfo(
"HcalIsoTrack") <<
"New trigger menu found !!!";
480 for (
unsigned itrig = 0; itrig <
trigNames_.size(); itrig++) {
482 if (triggerindx >=
n) {
484 <<
"the current menu";
unsigned int size() const
number of trigger paths in trigger table
std::vector< double > * t_HitEnergies3
double p() const
momentum vector magnitude
double eCone_hcal(const CaloGeometry *geo, edm::Handle< T > &hits, const GlobalPoint &hpoint1, const GlobalPoint &point1, double dR, const GlobalVector &trackMom, int &nRecHits, double hbThr=-100, double heThr=-100, double hfThr=-100, double hoThr=-100, double tMin=-500, double tMax=500, int detOnly=-1, int useRaw=0, bool debug=false)
Log< level::Info, true > LogVerbatim
edm::InputTag triggerEvent_
EventNumber_t event() const
T getUntrackedParameter(std::string const &, T const &) const
std::vector< spr::propagatedTrackID > propagateCALO(edm::Handle< reco::TrackCollection > &trkCollection, const CaloGeometry *geo, const MagneticField *bField, const std::string &theTrackQuality, bool debug=false)
edm::InputTag theTriggerResultsLabel_
edm::EDGetTokenT< reco::BeamSpot > tok_bs_
The single EDProduct to be saved for each event (AOD case)
edm::EDGetTokenT< reco::TrackCollection > tok_genTrack_
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > tok_geom_
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
TrackQuality
track quality
#define DEFINE_FWK_MODULE(type)
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > tok_magField_
void beginRun(edm::Run const &, edm::EventSetup const &) override
edm::EDGetTokenT< trigger::TriggerEvent > tok_trigEvt_
int bunchCrossing() const
edm::LuminosityBlockNumber_t luminosityBlock() const
double phi() const
azimuthal angle of momentum vector
T * make(const Args &...args) const
make new ROOT object
double chargeIsolationCone(unsigned int trkIndex, std::vector< spr::propagatedTrackDirection > &trkDirs, double dR, int &nNearTRKs, bool debug=false)
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
std::vector< unsigned int > * t_DetIds1
std::vector< unsigned int > * t_DetIds3
edm::EDGetTokenT< edm::TriggerResults > tok_trigRes_
Strings const & triggerNames() const
edm::EDGetTokenT< EcalRecHitCollection > tok_EE_
edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const override
double maxNeighborTrackEnr_
unsigned int triggerIndex(const std::string &triggerName) const
slot position of trigger path in trigger table (0 to size-1)
bool getData(T &iHolder) const
double eta() const
pseudorapidity of momentum vector
void addDefault(ParameterSetDescription const &psetDescription)
std::vector< std::string > HLTNames_
edm::EDGetTokenT< GenEventInfoProduct > tok_ew_
bool goodTrack(const reco::Track *pTrack, math::XYZPoint leadPV, trackSelectionParameters parameters, bool debug=false)
double pt() const
track transverse momentum
Abs< T >::type abs(const T &t)
constexpr int ieta() const
get the cell ieta
double eCone_ecal(const CaloGeometry *geo, edm::Handle< T > &barrelhits, edm::Handle< T > &endcaphits, const GlobalPoint &hpoint1, const GlobalPoint &point1, double dR, const GlobalVector &trackMom, int &nRecHits, double ebThr=-100, double eeThr=-100, double tMin=-500, double tMax=500, bool debug=false)
static std::string const triggerResults
IsoTrackCalibration(const edm::ParameterSet &)
std::vector< double > * t_HitEnergies
std::vector< std::string > trigNames_
virtual void beginLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &)
Log< level::Info, false > LogInfo
edm::EDGetTokenT< HBHERecHitCollection > tok_hbhe_
static TrackQuality qualityByName(const std::string &name)
XYZPointD XYZPoint
point in space with cartesian internal representation
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d'tor
std::string theTrackQuality_
edm::EDGetTokenT< EcalRecHitCollection > tok_EB_
void analyze(edm::Event const &, edm::EventSetup const &) override
spr::trackSelectionParameters selectionParameters_
reco::TrackBase::TrackQuality minQuality
void endRun(edm::Run const &, edm::EventSetup const &) override
~IsoTrackCalibration() override
Log< level::Warning, false > LogWarning
edm::Service< TFileService > fs_
std::vector< double > * t_HitEnergies1
std::vector< unsigned int > * t_DetIds
HLTConfigProvider hltConfig_
virtual void endLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &)
edm::EDGetTokenT< reco::VertexCollection > tok_recVtx_