|
|
Go to the documentation of this file.
11 #include "TDirectory.h"
14 #include "TLorentzVector.h"
15 #include "TInterpreter.h"
130 usesResource(
"TFileService");
132 const double isolationRadius(28.9);
196 tok_geom_ = esConsumes<CaloGeometry, CaloGeometryRecord>();
197 tok_magField_ = esConsumes<MagneticField, IdealMagneticFieldRecord>();
210 <<
iEvent.luminosityBlock() <<
" Bunch " <<
iEvent.bunchCrossing()
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()) {
259 bool triggerOK =
false;
266 if (!triggerEventHandle.
isValid()) {
274 const std::vector<std::string> &triggerNames_ =
triggerNames.triggerNames();
275 for (
unsigned int iHLT = 0; iHLT <
triggerResults->size(); 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");
441 tree->Branch(
"t_p", &
t_p,
"t_p/D");
442 tree->Branch(
"t_pt", &
t_pt,
"t_pt/D");
444 tree->Branch(
"t_phi", &
t_phi,
"t_phi/D");
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);
474 <<
" change flag " << changed_;
479 edm::LogInfo(
"HcalIsoTrack") <<
"New trigger menu found !!!";
481 for (
unsigned itrig = 0; itrig <
trigNames_.size(); itrig++) {
483 if (triggerindx >=
n) {
485 <<
"the current menu";
edm::EDGetTokenT< HBHERecHitCollection > tok_hbhe_
edm::EDGetTokenT< reco::VertexCollection > tok_recVtx_
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > tok_geom_
edm::EDGetTokenT< EcalRecHitCollection > tok_EE_
std::vector< unsigned int > * t_DetIds3
edm::EDGetTokenT< EcalRecHitCollection > tok_EB_
std::vector< unsigned int > * t_DetIds
double p() const
momentum vector magnitude
std::vector< unsigned int > * t_DetIds1
edm::EDGetTokenT< GenEventInfoProduct > tok_ew_
std::vector< double > * t_HitEnergies1
static const std::string triggerResults
virtual void beginLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &)
void analyze(edm::Event const &, edm::EventSetup const &) override
virtual void endLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &)
TrackQuality
track quality
edm::EDGetTokenT< reco::BeamSpot > tok_bs_
bool goodTrack(const reco::Track *pTrack, math::XYZPoint leadPV, trackSelectionParameters parameters, bool debug=false)
T getUntrackedParameter(std::string const &, T const &) const
Log< level::Info, false > LogInfo
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Log< level::Warning, false > LogWarning
spr::trackSelectionParameters selectionParameters_
double pt() const
track transverse momentum
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
HLTConfigProvider hltConfig_
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > tok_magField_
#define DEFINE_FWK_MODULE(type)
edm::EDGetTokenT< trigger::TriggerEvent > tok_trigEvt_
const Point & position() const
position
double chargeIsolationCone(unsigned int trkIndex, std::vector< spr::propagatedTrackDirection > &trkDirs, double dR, int &nNearTRKs, bool debug=false)
double phi() const
azimuthal angle of momentum vector
std::vector< std::string > HLTNames_
unsigned int size() const
number of trigger paths in trigger table
constexpr int ieta() const
get the cell ieta
XYZPointD XYZPoint
point in space with cartesian internal representation
double eta() const
pseudorapidity of momentum vector
void endRun(edm::Run const &, edm::EventSetup const &) override
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)
edm::Service< TFileService > fs_
The single EDProduct to be saved for each event (AOD case)
reco::TrackBase::TrackQuality minQuality
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
~IsoTrackCalibration() override
std::vector< spr::propagatedTrackID > propagateCALO(edm::Handle< reco::TrackCollection > &trkCollection, const CaloGeometry *geo, const MagneticField *bField, const std::string &theTrackQuality, bool debug=false)
static TrackQuality qualityByName(const std::string &name)
edm::InputTag triggerEvent_
edm::EDGetTokenT< reco::TrackCollection > tok_genTrack_
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d'tor
Log< level::Info, true > LogVerbatim
void beginRun(edm::Run const &, edm::EventSetup const &) override
std::vector< std::string > trigNames_
double maxNeighborTrackEnr_
std::vector< double > * t_HitEnergies
std::string theTrackQuality_
std::vector< double > * t_HitEnergies3
Abs< T >::type abs(const T &t)
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)
void addDefault(ParameterSetDescription const &psetDescription)
IsoTrackCalibration(const edm::ParameterSet &)
edm::EDGetTokenT< edm::TriggerResults > tok_trigRes_
T * make(const Args &... args) const
make new ROOT object
edm::InputTag theTriggerResultsLabel_