CMS 3D CMS Logo

List of all members | Public Member Functions | Public Attributes | Private Attributes
OuterTrackerMonitorTrackingParticles Class Reference

#include <OuterTrackerMonitorTrackingParticles.h>

Inheritance diagram for OuterTrackerMonitorTrackingParticles:
DQMEDAnalyzer edm::one::EDProducer< edm::EndRunProducer, edm::one::WatchRuns, edm::EndLuminosityBlockProducer, edm::one::WatchLuminosityBlocks, edm::Accumulator > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
 OuterTrackerMonitorTrackingParticles (const edm::ParameterSet &)
 
 ~OuterTrackerMonitorTrackingParticles () override
 
- Public Member Functions inherited from DQMEDAnalyzer
void accumulate (edm::Event const &event, edm::EventSetup const &setup) final
 
virtual void analyze (edm::Event const &, edm::EventSetup const &)
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
virtual void dqmBeginLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &)
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
 DQMEDAnalyzer ()
 
virtual void dqmEndLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &)
 
virtual void dqmEndRun (edm::Run const &, edm::EventSetup const &)
 
void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) final
 
void endLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &setup) final
 
void endRun (edm::Run const &, edm::EventSetup const &) final
 
void endRunProduce (edm::Run &run, edm::EventSetup const &setup) final
 
virtual bool getCanSaveByLumi ()
 
- Public Member Functions inherited from edm::one::EDProducer< edm::EndRunProducer, edm::one::WatchRuns, edm::EndLuminosityBlockProducer, edm::one::WatchLuminosityBlocks, edm::Accumulator >
 EDProducer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Public Attributes

MonitorElementmatch_tp_d0 = 0
 
MonitorElementmatch_tp_eta = 0
 
MonitorElementmatch_tp_pt = 0
 
MonitorElementmatch_tp_pt_zoom = 0
 
MonitorElementmatch_tp_VtxR = 0
 
MonitorElementmatch_tp_VtxZ = 0
 
MonitorElementres_eta = 0
 
MonitorElementres_pt = 0
 
MonitorElementres_ptRel = 0
 
MonitorElementresd0_eta0p7to1 = 0
 
MonitorElementresd0_eta0to0p7 = 0
 
MonitorElementresd0_eta1p2to1p6 = 0
 
MonitorElementresd0_eta1p6to2 = 0
 
MonitorElementresd0_eta1to1p2 = 0
 
MonitorElementresd0_eta2to2p4 = 0
 
MonitorElementreseta_eta0p7to1 = 0
 
MonitorElementreseta_eta0to0p7 = 0
 
MonitorElementreseta_eta1p2to1p6 = 0
 
MonitorElementreseta_eta1p6to2 = 0
 
MonitorElementreseta_eta1to1p2 = 0
 
MonitorElementreseta_eta2to2p4 = 0
 
MonitorElementresphi_eta0p7to1 = 0
 
MonitorElementresphi_eta0to0p7 = 0
 
MonitorElementresphi_eta1p2to1p6 = 0
 
MonitorElementresphi_eta1p6to2 = 0
 
MonitorElementresphi_eta1to1p2 = 0
 
MonitorElementresphi_eta2to2p4 = 0
 
MonitorElementrespt_eta0p7to1_pt2to3 = 0
 
MonitorElementrespt_eta0p7to1_pt3to8 = 0
 
MonitorElementrespt_eta0p7to1_pt8toInf = 0
 
MonitorElementrespt_eta0to0p7_pt2to3 = 0
 
MonitorElementrespt_eta0to0p7_pt3to8 = 0
 
MonitorElementrespt_eta0to0p7_pt8toInf = 0
 
MonitorElementrespt_eta1p2to1p6_pt2to3 = 0
 
MonitorElementrespt_eta1p2to1p6_pt3to8 = 0
 
MonitorElementrespt_eta1p2to1p6_pt8toInf = 0
 
MonitorElementrespt_eta1p6to2_pt2to3 = 0
 
MonitorElementrespt_eta1p6to2_pt3to8 = 0
 
MonitorElementrespt_eta1p6to2_pt8toInf = 0
 
MonitorElementrespt_eta1to1p2_pt2to3 = 0
 
MonitorElementrespt_eta1to1p2_pt3to8 = 0
 
MonitorElementrespt_eta1to1p2_pt8toInf = 0
 
MonitorElementrespt_eta2to2p4_pt2to3 = 0
 
MonitorElementrespt_eta2to2p4_pt3to8 = 0
 
MonitorElementrespt_eta2to2p4_pt8toInf = 0
 
MonitorElementresVtxZ_eta0p7to1 = 0
 
MonitorElementresVtxZ_eta0to0p7 = 0
 
MonitorElementresVtxZ_eta1p2to1p6 = 0
 
MonitorElementresVtxZ_eta1p6to2 = 0
 
MonitorElementresVtxZ_eta1to1p2 = 0
 
MonitorElementresVtxZ_eta2to2p4 = 0
 
MonitorElementtp_d0 = 0
 
MonitorElementtp_eta = 0
 
MonitorElementtp_pt = 0
 
MonitorElementtp_pt_zoom = 0
 
MonitorElementtp_VtxR = 0
 
MonitorElementtp_VtxZ = 0
 
MonitorElementTrack_MatchedChi2 = 0
 
MonitorElementTrack_MatchedChi2Red = 0
 
MonitorElementtrackParts_Eta = 0
 
MonitorElementtrackParts_Phi = 0
 
MonitorElementtrackParts_Pt = 0
 

Private Attributes

edm::ParameterSet conf_
 
double L1Tk_maxChi2
 
double L1Tk_maxChi2dof
 
int L1Tk_minNStub
 
int L1Tk_nPar
 
std::string topFolderName_
 
double TP_maxEta
 
double TP_maxPt
 
double TP_maxVtxZ
 
int TP_minNLayersStub
 
int TP_minNStub
 
double TP_minPt
 
int TP_select_eventid
 
edm::EDGetTokenT< std::vector< TrackingParticle > > trackingParticleToken_
 
edm::EDGetTokenT< TTClusterAssociationMap< Ref_Phase2TrackerDigi_ > > ttClusterMCTruthToken_
 
edm::EDGetTokenT< TTStubAssociationMap< Ref_Phase2TrackerDigi_ > > ttStubMCTruthToken_
 
edm::EDGetTokenT< TTTrackAssociationMap< Ref_Phase2TrackerDigi_ > > ttTrackMCTruthToken_
 

Additional Inherited Members

- Public Types inherited from DQMEDAnalyzer
typedef dqm::reco::DQMStore DQMStore
 
typedef dqm::reco::MonitorElement MonitorElement
 
- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::ProducerBase
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
- Protected Attributes inherited from DQMEDAnalyzer
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description

Definition at line 24 of file OuterTrackerMonitorTrackingParticles.h.

Constructor & Destructor Documentation

OuterTrackerMonitorTrackingParticles::OuterTrackerMonitorTrackingParticles ( const edm::ParameterSet iConfig)
explicit

Definition at line 39 of file OuterTrackerMonitorTrackingParticles.cc.

References conf_, edm::ParameterSet::getParameter(), L1Tk_maxChi2, L1Tk_maxChi2dof, L1Tk_minNStub, L1Tk_nPar, AlCaHLTBitMon_QueryRunRegistry::string, topFolderName_, TP_maxEta, TP_maxPt, TP_maxVtxZ, TP_minNLayersStub, TP_minNStub, TP_minPt, TP_select_eventid, trackingParticleToken_, ttClusterMCTruthToken_, ttStubMCTruthToken_, and ttTrackMCTruthToken_.

40  : conf_(iConfig) {
41  topFolderName_ = conf_.getParameter<std::string>("TopFolderName");
43  consumes<std::vector<TrackingParticle>>(conf_.getParameter<edm::InputTag>("trackingParticleToken"));
45  consumes<TTStubAssociationMap<Ref_Phase2TrackerDigi_>>(conf_.getParameter<edm::InputTag>("MCTruthStubInputTag"));
46  ttClusterMCTruthToken_ = consumes<TTClusterAssociationMap<Ref_Phase2TrackerDigi_>>(
47  conf_.getParameter<edm::InputTag>("MCTruthClusterInputTag"));
48  ttTrackMCTruthToken_ = consumes<TTTrackAssociationMap<Ref_Phase2TrackerDigi_>>(
49  conf_.getParameter<edm::InputTag>("MCTruthTrackInputTag"));
50  L1Tk_nPar = conf_.getParameter<int>("L1Tk_nPar"); // 4 or 5(d0) track parameters
51  L1Tk_minNStub = conf_.getParameter<int>("L1Tk_minNStub"); // min number of stubs in the track
52  L1Tk_maxChi2 = conf_.getParameter<double>("L1Tk_maxChi2"); // maximum chi2 of the track
53  L1Tk_maxChi2dof = conf_.getParameter<double>("L1Tk_maxChi2dof"); // maximum chi2/dof of the track
54  TP_minNStub = conf_.getParameter<int>("TP_minNStub"); // min number of stubs in the tracking particle to
55  //min number of layers with stubs in the tracking particle to consider matching
56  TP_minNLayersStub = conf_.getParameter<int>("TP_minNLayersStub");
57  TP_minPt = conf_.getParameter<double>("TP_minPt"); // min pT to consider matching
58  TP_maxPt = conf_.getParameter<double>("TP_maxPt"); // max pT to consider matching
59  TP_maxEta = conf_.getParameter<double>("TP_maxEta"); // max eta to consider matching
60  TP_maxVtxZ = conf_.getParameter<double>("TP_maxVtxZ"); // max vertZ (or z0) to consider matching
61  TP_select_eventid = conf_.getParameter<int>("TP_select_eventid"); // PI or not
62 }
T getParameter(std::string const &) const
edm::EDGetTokenT< std::vector< TrackingParticle > > trackingParticleToken_
edm::EDGetTokenT< TTTrackAssociationMap< Ref_Phase2TrackerDigi_ > > ttTrackMCTruthToken_
edm::EDGetTokenT< TTClusterAssociationMap< Ref_Phase2TrackerDigi_ > > ttClusterMCTruthToken_
edm::EDGetTokenT< TTStubAssociationMap< Ref_Phase2TrackerDigi_ > > ttStubMCTruthToken_
OuterTrackerMonitorTrackingParticles::~OuterTrackerMonitorTrackingParticles ( )
override

Definition at line 64 of file OuterTrackerMonitorTrackingParticles.cc.

64  {
65  // do anything here that needs to be done at desctruction time
66  // (e.g. close files, deallocate resources etc.)
67 }

Member Function Documentation

void OuterTrackerMonitorTrackingParticles::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
override

Definition at line 72 of file OuterTrackerMonitorTrackingParticles.cc.

References MaterialEffects_cfi::A, TrackingParticle::charge(), funct::cos(), JetChargeProducer_cfi::exp, dqm::impl::MonitorElement::Fill(), edm::EventSetup::get(), edm::Event::getByToken(), createfilelist::int, isum, edm::HandleBase::isValid(), L1Tk_maxChi2, L1Tk_maxChi2dof, L1Tk_minNStub, L1Tk_nPar, TrackerTopology::layer(), match_tp_d0, match_tp_eta, match_tp_pt, match_tp_pt_zoom, match_tp_VtxR, match_tp_VtxZ, TrackingParticle::p4(), TrackingParticle::pdgId(), pi, edm::ESHandle< T >::product(), res_eta, res_pt, res_ptRel, resd0_eta0p7to1, resd0_eta0to0p7, resd0_eta1p2to1p6, resd0_eta1p6to2, resd0_eta1to1p2, resd0_eta2to2p4, reseta_eta0p7to1, reseta_eta0to0p7, reseta_eta1p2to1p6, reseta_eta1p6to2, reseta_eta1to1p2, reseta_eta2to2p4, resphi_eta0p7to1, resphi_eta0to0p7, resphi_eta1p2to1p6, resphi_eta1p6to2, resphi_eta1to1p2, resphi_eta2to2p4, respt_eta0p7to1_pt2to3, respt_eta0p7to1_pt3to8, respt_eta0p7to1_pt8toInf, respt_eta0to0p7_pt2to3, respt_eta0to0p7_pt3to8, respt_eta0to0p7_pt8toInf, respt_eta1p2to1p6_pt2to3, respt_eta1p2to1p6_pt3to8, respt_eta1p2to1p6_pt8toInf, respt_eta1p6to2_pt2to3, respt_eta1p6to2_pt3to8, respt_eta1p6to2_pt8toInf, respt_eta1to1p2_pt2to3, respt_eta1to1p2_pt3to8, respt_eta1to1p2_pt8toInf, respt_eta2to2p4_pt2to3, respt_eta2to2p4_pt3to8, respt_eta2to2p4_pt8toInf, resVtxZ_eta0p7to1, resVtxZ_eta0to0p7, resVtxZ_eta1p2to1p6, resVtxZ_eta1p6to2, resVtxZ_eta1to1p2, resVtxZ_eta2to2p4, funct::sin(), mathSSE::sqrt(), funct::tan(), StripSubdetector::TID, StripSubdetector::TOB, tp_d0, tp_eta, TP_maxEta, TP_maxPt, TP_maxVtxZ, TP_minNLayersStub, TP_minNStub, TP_minPt, tp_pt, tp_pt_zoom, TP_select_eventid, tp_VtxR, tp_VtxZ, Track_MatchedChi2, Track_MatchedChi2Red, trackingParticleToken_, trackParts_Eta, trackParts_Phi, trackParts_Pt, ttClusterMCTruthToken_, ttStubMCTruthToken_, and ttTrackMCTruthToken_.

72  {
73  // Tracking Particles
74  edm::Handle<std::vector<TrackingParticle>> trackingParticleHandle;
75  iEvent.getByToken(trackingParticleToken_, trackingParticleHandle);
76 
77  // Truth Association Maps
79  iEvent.getByToken(ttTrackMCTruthToken_, MCTruthTTTrackHandle);
81  iEvent.getByToken(ttClusterMCTruthToken_, MCTruthTTClusterHandle);
83  iEvent.getByToken(ttStubMCTruthToken_, MCTruthTTStubHandle);
84 
85  // Geometries
87  iSetup.get<TrackerTopologyRcd>().get(tTopoHandle);
88  const TrackerTopology *const tTopo = tTopoHandle.product();
89 
90  // Loop over tracking particles
91  int this_tp = 0;
92  for (auto iterTP : *trackingParticleHandle) {
93  edm::Ptr<TrackingParticle> tp_ptr(trackingParticleHandle, this_tp);
94  this_tp++;
95 
96  int tmp_eventid = iterTP.eventId().event();
97  float tmp_tp_pt = iterTP.pt();
98  float tmp_tp_phi = iterTP.phi();
99  float tmp_tp_eta = iterTP.eta();
100 
101  //Calculate nLayers variable
102  std::vector<edm::Ref<edmNew::DetSetVector<TTStub<Ref_Phase2TrackerDigi_>>, TTStub<Ref_Phase2TrackerDigi_>>>
103  theStubRefs = MCTruthTTStubHandle->findTTStubRefs(tp_ptr);
104 
105  int hasStubInLayer[11] = {0};
106  for (unsigned int is = 0; is < theStubRefs.size(); is++) {
107  DetId detid(theStubRefs.at(is)->getDetId());
108  int layer = -1;
109  if (detid.subdetId() == StripSubdetector::TOB)
110  layer = static_cast<int>(tTopo->layer(detid)) - 1; //fill in array as entries 0-5
111  else if (detid.subdetId() == StripSubdetector::TID)
112  layer = static_cast<int>(tTopo->layer(detid)) + 5; //fill in array as entries 6-10
113 
114  //treat genuine stubs separately (==2 is genuine, ==1 is not)
115  if (MCTruthTTStubHandle->findTrackingParticlePtr(theStubRefs.at(is)).isNull() && hasStubInLayer[layer] < 2)
116  hasStubInLayer[layer] = 1;
117  else
118  hasStubInLayer[layer] = 2;
119  }
120 
121  int nStubLayerTP = 0;
122  int nStubLayerTP_g = 0;
123  for (int isum = 0; isum < 11; isum++) {
124  if (hasStubInLayer[isum] >= 1)
125  nStubLayerTP += 1;
126  else if (hasStubInLayer[isum] == 2)
127  nStubLayerTP_g += 1;
128  }
129 
130  if (std::fabs(tmp_tp_eta) > TP_maxEta)
131  continue;
132  // Fill the 1D distribution plots for tracking particles, to monitor change in stub definition
133  if (tmp_tp_pt > TP_minPt && nStubLayerTP >= TP_minNLayersStub) {
134  trackParts_Pt->Fill(tmp_tp_pt);
135  trackParts_Eta->Fill(tmp_tp_eta);
136  trackParts_Phi->Fill(tmp_tp_phi);
137  }
138 
139  if (TP_select_eventid == 0 && tmp_eventid != 0)
140  continue; //only care about tracking particles from the primary interaction for efficiency/resolution
141  int nStubTP = -1;
142  if (MCTruthTTStubHandle.isValid()) {
143  std::vector<edm::Ref<edmNew::DetSetVector<TTStub<Ref_Phase2TrackerDigi_>>, TTStub<Ref_Phase2TrackerDigi_>>>
144  theStubRefs = MCTruthTTStubHandle->findTTStubRefs(tp_ptr);
145  nStubTP = (int)theStubRefs.size();
146  }
147  if (MCTruthTTClusterHandle.isValid() && MCTruthTTClusterHandle->findTTClusterRefs(tp_ptr).empty())
148  continue;
149 
150  float tmp_tp_vz = iterTP.vz();
151  float tmp_tp_vx = iterTP.vx();
152  float tmp_tp_vy = iterTP.vy();
153  float tmp_tp_charge = tp_ptr->charge();
154  int tmp_tp_pdgid = iterTP.pdgId();
155 
156  // ----------------------------------------------------------------------------------------------
157  // calculate d0 and VtxZ propagated back to the IP, pass if greater than max
158  // VtxZ
159  float tmp_tp_t = tan(2.0 * atan(1.0) - 2.0 * atan(exp(-tmp_tp_eta)));
160  float delx = -tmp_tp_vx;
161  float dely = -tmp_tp_vy;
162  float K = 0.01 * 0.5696 / tmp_tp_pt * tmp_tp_charge; // curvature correction
163  float A = 1. / (2. * K);
164  float tmp_tp_x0p = delx - A * sin(tmp_tp_phi);
165  float tmp_tp_y0p = dely + A * cos(tmp_tp_phi);
166  float tmp_tp_rp = sqrt(tmp_tp_x0p * tmp_tp_x0p + tmp_tp_y0p * tmp_tp_y0p);
167  static double pi = 4.0 * atan(1.0);
168  float delphi = tmp_tp_phi - atan2(-K * tmp_tp_x0p, K * tmp_tp_y0p);
169  if (delphi < -pi)
170  delphi += 2.0 * pi;
171  if (delphi > pi)
172  delphi -= 2.0 * pi;
173 
174  float tmp_tp_VtxZ = tmp_tp_vz + tmp_tp_t * delphi / (2.0 * K);
175  float tmp_tp_VtxR = sqrt(tmp_tp_vx * tmp_tp_vx + tmp_tp_vy * tmp_tp_vy);
176  float tmp_tp_d0 = tmp_tp_charge * tmp_tp_rp - (1. / (2. * K));
177 
178  // simpler formula for d0, in cases where the charge is zero:
179  // https://github.com/cms-sw/cmssw/blob/master/DataFormats/TrackReco/interface/TrackBase.h
180  float other_d0 = -tmp_tp_vx * sin(tmp_tp_phi) + tmp_tp_vy * cos(tmp_tp_phi);
181  tmp_tp_d0 = tmp_tp_d0 * (-1); // fix d0 sign
182  if (K == 0) {
183  tmp_tp_d0 = other_d0;
184  tmp_tp_VtxZ = tmp_tp_vz;
185  }
186  if (std::fabs(tmp_tp_VtxZ) > TP_maxVtxZ)
187  continue;
188 
189  // To make efficiency plots where the denominator has NO stub cuts
190  if (tmp_tp_VtxR < 1.0) {
191  tp_pt->Fill(tmp_tp_pt); //pT effic, no cut on pT, but VtxR cut
192  if (tmp_tp_pt <= 10)
193  tp_pt_zoom->Fill(tmp_tp_pt); //pT effic, no cut on pT, but VtxR cut
194  }
195  if (tmp_tp_pt < TP_minPt)
196  continue;
197  tp_VtxR->Fill(tmp_tp_VtxR); // VtxR efficiency has no cut on VtxR
198  if (tmp_tp_VtxR > 1.0)
199  continue;
200  tp_eta->Fill(tmp_tp_eta);
201  tp_d0->Fill(tmp_tp_d0);
202  tp_VtxZ->Fill(tmp_tp_VtxZ);
203 
204  if (nStubTP < TP_minNStub || nStubLayerTP < TP_minNLayersStub)
205  continue; //nStub cut not included in denominator of efficiency plots
206 
207  // ----------------------------------------------------------------------------------------------
208  // look for L1 tracks matched to the tracking particle
209  int tp_nMatch = 0;
210  int i_track = -1;
211  float i_chi2dof = 99999;
212  if (MCTruthTTTrackHandle.isValid()) {
213  std::vector<edm::Ptr<TTTrack<Ref_Phase2TrackerDigi_>>> matchedTracks =
214  MCTruthTTTrackHandle->findTTTrackPtrs(tp_ptr);
215 
216  // ----------------------------------------------------------------------------------------------
217  // loop over matched L1 tracks
218  // here, "match" means tracks that can be associated to a TrackingParticle
219  // with at least one hit of at least one of its clusters
220  // https://twiki.cern.ch/twiki/bin/viewauth/CMS/SLHCTrackerTriggerSWTools#MC_truth_for_TTTrack
221  int trkCounter = 0;
222  for (auto thisTrack : matchedTracks) {
223  if (!MCTruthTTTrackHandle->isGenuine(thisTrack))
224  continue;
225  // ----------------------------------------------------------------------------------------------
226  // further require L1 track to be (loosely) genuine, that there is only
227  // one TP matched to the track
228  // + have >= L1Tk_minNStub stubs for it to be a valid match
229  int tmp_trk_nstub = thisTrack->getStubRefs().size();
230  if (tmp_trk_nstub < L1Tk_minNStub)
231  continue;
232  float dmatch_pt = 999;
233  float dmatch_eta = 999;
234  float dmatch_phi = 999;
235  int match_id = 999;
236 
237  edm::Ptr<TrackingParticle> my_tp = MCTruthTTTrackHandle->findTrackingParticlePtr(thisTrack);
238  dmatch_pt = std::fabs(my_tp->p4().pt() - tmp_tp_pt);
239  dmatch_eta = std::fabs(my_tp->p4().eta() - tmp_tp_eta);
240  dmatch_phi = std::fabs(my_tp->p4().phi() - tmp_tp_phi);
241  match_id = my_tp->pdgId();
242  float tmp_trk_chi2dof = (thisTrack->getChi2(L1Tk_nPar)) / (2 * tmp_trk_nstub - L1Tk_nPar);
243 
244  // ensure that track is uniquely matched to the TP we are looking at!
245  if (dmatch_pt < 0.1 && dmatch_eta < 0.1 && dmatch_phi < 0.1 && tmp_tp_pdgid == match_id) {
246  tp_nMatch++;
247  if (i_track < 0 || tmp_trk_chi2dof < i_chi2dof) {
248  i_track = trkCounter;
249  i_chi2dof = tmp_trk_chi2dof;
250  }
251  }
252  trkCounter++;
253  } // end loop over matched L1 tracks
254 
255  if (tp_nMatch < 1)
256  continue;
257  // Get information on the matched tracks
258  float tmp_matchtrk_pt = -999;
259  float tmp_matchtrk_eta = -999;
260  float tmp_matchtrk_phi = -999;
261  float tmp_matchtrk_VtxZ = -999;
262  float tmp_matchtrk_chi2 = -999;
263  float tmp_matchtrk_chi2dof = -999;
264  int tmp_matchTrk_nStub = -999;
265  float tmp_matchtrk_d0 = -999;
266 
267  tmp_matchtrk_pt = matchedTracks[i_track]->getMomentum(L1Tk_nPar).perp();
268  tmp_matchtrk_eta = matchedTracks[i_track]->getMomentum(L1Tk_nPar).eta();
269  tmp_matchtrk_phi = matchedTracks[i_track]->getMomentum(L1Tk_nPar).phi();
270  tmp_matchtrk_VtxZ = matchedTracks[i_track]->getPOCA(L1Tk_nPar).z();
271  tmp_matchtrk_chi2 = matchedTracks[i_track]->getChi2(L1Tk_nPar);
272  tmp_matchtrk_chi2dof = matchedTracks[i_track]->getChi2Red(L1Tk_nPar);
273  tmp_matchTrk_nStub = (int)matchedTracks[i_track]->getStubRefs().size();
274 
275  Track_MatchedChi2->Fill(tmp_matchtrk_chi2);
276  Track_MatchedChi2Red->Fill(tmp_matchtrk_chi2dof);
277 
278  //for d0
279  float tmp_matchtrk_x0 = matchedTracks[i_track]->getPOCA(L1Tk_nPar).x();
280  float tmp_matchtrk_y0 = matchedTracks[i_track]->getPOCA(L1Tk_nPar).y();
281  tmp_matchtrk_d0 = -tmp_matchtrk_x0 * sin(tmp_matchtrk_phi) + tmp_matchtrk_y0 * cos(tmp_matchtrk_phi);
282 
283  //Add cuts for the matched tracks, numerator
284  if (tmp_tp_pt > TP_maxPt)
285  continue;
286  if (tmp_matchTrk_nStub < L1Tk_minNStub || tmp_matchtrk_chi2 > L1Tk_maxChi2 ||
287  tmp_matchtrk_chi2dof > L1Tk_maxChi2dof)
288  continue;
289 
290  // fill matched track histograms (if passes all criteria)
291  match_tp_pt->Fill(tmp_tp_pt);
292  if (tmp_tp_pt > 0 && tmp_tp_pt <= 10)
293  match_tp_pt_zoom->Fill(tmp_tp_pt);
294  match_tp_eta->Fill(tmp_tp_eta);
295  match_tp_d0->Fill(tmp_tp_d0);
296  match_tp_VtxR->Fill(tmp_tp_VtxR);
297  match_tp_VtxZ->Fill(tmp_tp_VtxZ);
298 
299  // Eta and pT histograms for resolution
300  float pt_diff = tmp_matchtrk_pt - tmp_tp_pt;
301  float pt_res = pt_diff / tmp_tp_pt;
302  float eta_res = tmp_matchtrk_eta - tmp_tp_eta;
303  float phi_res = tmp_matchtrk_phi - tmp_tp_phi;
304  float VtxZ_res = tmp_matchtrk_VtxZ - tmp_tp_VtxZ;
305  float d0_res = tmp_matchtrk_d0 - tmp_tp_d0;
306 
307  // fill total resolution histograms
308  res_pt->Fill(pt_diff);
309  res_ptRel->Fill(pt_res);
310  res_eta->Fill(eta_res);
311 
312  // Fill resolution plots for different abs(eta) bins:
313  // (0, 0.7), (0.7, 1.0), (1.0, 1.2), (1.2, 1.6), (1.6, 2.0), (2.0, 2.4)
314  if (std::fabs(tmp_tp_eta) >= 0 && std::fabs(tmp_tp_eta) < 0.7) {
315  reseta_eta0to0p7->Fill(eta_res);
316  resphi_eta0to0p7->Fill(phi_res);
317  resVtxZ_eta0to0p7->Fill(VtxZ_res);
318  resd0_eta0to0p7->Fill(d0_res);
319  if (tmp_tp_pt >= 2 && tmp_tp_pt < 3)
320  respt_eta0to0p7_pt2to3->Fill(pt_res);
321  else if (tmp_tp_pt >= 3 && tmp_tp_pt < 8)
322  respt_eta0to0p7_pt3to8->Fill(pt_res);
323  else if (tmp_tp_pt >= 8)
325  } else if (std::fabs(tmp_tp_eta) >= 0.7 && std::fabs(tmp_tp_eta) < 1.0) {
326  reseta_eta0p7to1->Fill(eta_res);
327  resphi_eta0p7to1->Fill(phi_res);
328  resVtxZ_eta0p7to1->Fill(VtxZ_res);
329  resd0_eta0p7to1->Fill(d0_res);
330  if (tmp_tp_pt >= 2 && tmp_tp_pt < 3)
331  respt_eta0p7to1_pt2to3->Fill(pt_res);
332  else if (tmp_tp_pt >= 3 && tmp_tp_pt < 8)
333  respt_eta0p7to1_pt3to8->Fill(pt_res);
334  else if (tmp_tp_pt >= 8)
336  } else if (std::fabs(tmp_tp_eta) >= 1.0 && std::fabs(tmp_tp_eta) < 1.2) {
337  reseta_eta1to1p2->Fill(eta_res);
338  resphi_eta1to1p2->Fill(phi_res);
339  resVtxZ_eta1to1p2->Fill(VtxZ_res);
340  resd0_eta1to1p2->Fill(d0_res);
341  if (tmp_tp_pt >= 2 && tmp_tp_pt < 3)
342  respt_eta1to1p2_pt2to3->Fill(pt_res);
343  else if (tmp_tp_pt >= 3 && tmp_tp_pt < 8)
344  respt_eta1to1p2_pt3to8->Fill(pt_res);
345  else if (tmp_tp_pt >= 8)
347  } else if (std::fabs(tmp_tp_eta) >= 1.2 && std::fabs(tmp_tp_eta) < 1.6) {
348  reseta_eta1p2to1p6->Fill(eta_res);
349  resphi_eta1p2to1p6->Fill(phi_res);
350  resVtxZ_eta1p2to1p6->Fill(VtxZ_res);
351  resd0_eta1p2to1p6->Fill(d0_res);
352  if (tmp_tp_pt >= 2 && tmp_tp_pt < 3)
354  else if (tmp_tp_pt >= 3 && tmp_tp_pt < 8)
356  else if (tmp_tp_pt >= 8)
358  } else if (std::fabs(tmp_tp_eta) >= 1.6 && std::fabs(tmp_tp_eta) < 2.0) {
359  reseta_eta1p6to2->Fill(eta_res);
360  resphi_eta1p6to2->Fill(phi_res);
361  resVtxZ_eta1p6to2->Fill(VtxZ_res);
362  resd0_eta1p6to2->Fill(d0_res);
363  if (tmp_tp_pt >= 2 && tmp_tp_pt < 3)
364  respt_eta1p6to2_pt2to3->Fill(pt_res);
365  else if (tmp_tp_pt >= 3 && tmp_tp_pt < 8)
366  respt_eta1p6to2_pt3to8->Fill(pt_res);
367  else if (tmp_tp_pt >= 8)
369  } else if (std::fabs(tmp_tp_eta) >= 2.0 && std::fabs(tmp_tp_eta) <= 2.4) {
370  reseta_eta2to2p4->Fill(eta_res);
371  resphi_eta2to2p4->Fill(phi_res);
372  resVtxZ_eta2to2p4->Fill(VtxZ_res);
373  resd0_eta2to2p4->Fill(d0_res);
374  if (tmp_tp_pt >= 2 && tmp_tp_pt < 3)
375  respt_eta2to2p4_pt2to3->Fill(pt_res);
376  else if (tmp_tp_pt >= 3 && tmp_tp_pt < 8)
377  respt_eta2to2p4_pt3to8->Fill(pt_res);
378  else if (tmp_tp_pt >= 8)
380  }
381  } //if MC TTTrack handle is valid
382  } //end loop over tracking particles
383 } // end of method
const LorentzVector & p4() const
Four-momentum Lorentz vector. Note this is taken from the first SimTrack only.
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
int pdgId() const
PDG ID.
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
double isum
const Double_t pi
edm::EDGetTokenT< std::vector< TrackingParticle > > trackingParticleToken_
void Fill(long long x)
edm::EDGetTokenT< TTTrackAssociationMap< Ref_Phase2TrackerDigi_ > > ttTrackMCTruthToken_
T sqrt(T t)
Definition: SSEVec.h:19
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
edm::EDGetTokenT< TTClusterAssociationMap< Ref_Phase2TrackerDigi_ > > ttClusterMCTruthToken_
static constexpr auto TOB
bool isValid() const
Definition: HandleBase.h:70
Class to store the L1 Track Trigger stubs.
Definition: TTStub.h:22
edm::EDGetTokenT< TTStubAssociationMap< Ref_Phase2TrackerDigi_ > > ttStubMCTruthToken_
Definition: DetId.h:17
unsigned int layer(const DetId &id) const
T get() const
Definition: EventSetup.h:73
static constexpr auto TID
T const * product() const
Definition: ESHandle.h:86
void OuterTrackerMonitorTrackingParticles::bookHistograms ( DQMStore::IBooker iBooker,
edm::Run const &  run,
edm::EventSetup const &  es 
)
overridevirtual

Implements DQMEDAnalyzer.

Definition at line 387 of file OuterTrackerMonitorTrackingParticles.cc.

References dqm::dqmstoreimpl::DQMStore::IBooker::book1D(), conf_, DEFINE_FWK_MODULE, edm::ParameterSet::getParameter(), match_tp_d0, match_tp_eta, match_tp_pt, match_tp_pt_zoom, match_tp_VtxR, match_tp_VtxZ, res_eta, res_pt, res_ptRel, resd0_eta0p7to1, resd0_eta0to0p7, resd0_eta1p2to1p6, resd0_eta1p6to2, resd0_eta1to1p2, resd0_eta2to2p4, reseta_eta0p7to1, reseta_eta0to0p7, reseta_eta1p2to1p6, reseta_eta1p6to2, reseta_eta1to1p2, reseta_eta2to2p4, resphi_eta0p7to1, resphi_eta0to0p7, resphi_eta1p2to1p6, resphi_eta1p6to2, resphi_eta1to1p2, resphi_eta2to2p4, respt_eta0p7to1_pt2to3, respt_eta0p7to1_pt3to8, respt_eta0p7to1_pt8toInf, respt_eta0to0p7_pt2to3, respt_eta0to0p7_pt3to8, respt_eta0to0p7_pt8toInf, respt_eta1p2to1p6_pt2to3, respt_eta1p2to1p6_pt3to8, respt_eta1p2to1p6_pt8toInf, respt_eta1p6to2_pt2to3, respt_eta1p6to2_pt3to8, respt_eta1p6to2_pt8toInf, respt_eta1to1p2_pt2to3, respt_eta1to1p2_pt3to8, respt_eta1to1p2_pt8toInf, respt_eta2to2p4_pt2to3, respt_eta2to2p4_pt3to8, respt_eta2to2p4_pt8toInf, resVtxZ_eta0p7to1, resVtxZ_eta0to0p7, resVtxZ_eta1p2to1p6, resVtxZ_eta1p6to2, resVtxZ_eta1to1p2, resVtxZ_eta2to2p4, dqm::impl::MonitorElement::setAxisTitle(), dqm::dqmstoreimpl::DQMStore::IBooker::setCurrentFolder(), AlCaHLTBitMon_QueryRunRegistry::string, topFolderName_, tp_d0, tp_eta, tp_pt, tp_pt_zoom, tp_VtxR, tp_VtxZ, Track_MatchedChi2, Track_MatchedChi2Red, trackParts_Eta, trackParts_Phi, and trackParts_Pt.

389  {
390  // Histogram setup and definitions
392  iBooker.setCurrentFolder(topFolderName_ + "/trackParticles");
393 
394  // 1D: pT
395  edm::ParameterSet psTrackParts_Pt = conf_.getParameter<edm::ParameterSet>("TH1TrackParts_Pt");
396  HistoName = "trackParts_Pt";
397  trackParts_Pt = iBooker.book1D(HistoName,
398  HistoName,
399  psTrackParts_Pt.getParameter<int32_t>("Nbinsx"),
400  psTrackParts_Pt.getParameter<double>("xmin"),
401  psTrackParts_Pt.getParameter<double>("xmax"));
402  trackParts_Pt->setAxisTitle("p_{T} [GeV]", 1);
403  trackParts_Pt->setAxisTitle("# tracking particles", 2);
404 
405  // 1D: eta
406  edm::ParameterSet psTrackParts_Eta = conf_.getParameter<edm::ParameterSet>("TH1TrackParts_Eta");
407  HistoName = "trackParts_Eta";
408  trackParts_Eta = iBooker.book1D(HistoName,
409  HistoName,
410  psTrackParts_Eta.getParameter<int32_t>("Nbinsx"),
411  psTrackParts_Eta.getParameter<double>("xmin"),
412  psTrackParts_Eta.getParameter<double>("xmax"));
413  trackParts_Eta->setAxisTitle("#eta", 1);
414  trackParts_Eta->setAxisTitle("# tracking particles", 2);
415 
416  // 1D: phi
417  edm::ParameterSet psTrackParts_Phi = conf_.getParameter<edm::ParameterSet>("TH1TrackParts_Phi");
418  HistoName = "trackParts_Phi";
419  trackParts_Phi = iBooker.book1D(HistoName,
420  HistoName,
421  psTrackParts_Phi.getParameter<int32_t>("Nbinsx"),
422  psTrackParts_Phi.getParameter<double>("xmin"),
423  psTrackParts_Phi.getParameter<double>("xmax"));
424  trackParts_Phi->setAxisTitle("#phi", 1);
425  trackParts_Phi->setAxisTitle("# tracking particles", 2);
426 
427  // For tracks correctly matched to truth-level track
428  iBooker.setCurrentFolder(topFolderName_ + "/Tracks");
429  // chi2
430  edm::ParameterSet psTrack_Chi2 = conf_.getParameter<edm::ParameterSet>("TH1_Track_Chi2");
431  HistoName = "Track_MatchedChi2";
432  Track_MatchedChi2 = iBooker.book1D(HistoName,
433  HistoName,
434  psTrack_Chi2.getParameter<int32_t>("Nbinsx"),
435  psTrack_Chi2.getParameter<double>("xmin"),
436  psTrack_Chi2.getParameter<double>("xmax"));
437  Track_MatchedChi2->setAxisTitle("L1 Track #chi^{2}", 1);
438  Track_MatchedChi2->setAxisTitle("# Correctly Matched L1 Tracks", 2);
439 
440  // chi2Red
441  edm::ParameterSet psTrack_Chi2Red = conf_.getParameter<edm::ParameterSet>("TH1_Track_Chi2R");
442  HistoName = "Track_MatchedChi2Red";
443  Track_MatchedChi2Red = iBooker.book1D(HistoName,
444  HistoName,
445  psTrack_Chi2Red.getParameter<int32_t>("Nbinsx"),
446  psTrack_Chi2Red.getParameter<double>("xmin"),
447  psTrack_Chi2Red.getParameter<double>("xmax"));
448  Track_MatchedChi2Red->setAxisTitle("L1 Track #chi^{2}/ndf", 1);
449  Track_MatchedChi2Red->setAxisTitle("# Correctly Matched L1 Tracks", 2);
450 
451  // 1D plots for efficiency
452  iBooker.setCurrentFolder(topFolderName_ + "/Tracks/Efficiency");
453  // pT
454  edm::ParameterSet psEffic_pt = conf_.getParameter<edm::ParameterSet>("TH1Effic_pt");
455  HistoName = "tp_pt";
456  tp_pt = iBooker.book1D(HistoName,
457  HistoName,
458  psEffic_pt.getParameter<int32_t>("Nbinsx"),
459  psEffic_pt.getParameter<double>("xmin"),
460  psEffic_pt.getParameter<double>("xmax"));
461  tp_pt->setAxisTitle("p_{T} [GeV]", 1);
462  tp_pt->setAxisTitle("# tracking particles", 2);
463 
464  // Matched TP's pT
465  HistoName = "match_tp_pt";
466  match_tp_pt = iBooker.book1D(HistoName,
467  HistoName,
468  psEffic_pt.getParameter<int32_t>("Nbinsx"),
469  psEffic_pt.getParameter<double>("xmin"),
470  psEffic_pt.getParameter<double>("xmax"));
471  match_tp_pt->setAxisTitle("p_{T} [GeV]", 1);
472  match_tp_pt->setAxisTitle("# matched tracking particles", 2);
473 
474  // pT zoom (0-10 GeV)
475  edm::ParameterSet psEffic_pt_zoom = conf_.getParameter<edm::ParameterSet>("TH1Effic_pt_zoom");
476  HistoName = "tp_pt_zoom";
477  tp_pt_zoom = iBooker.book1D(HistoName,
478  HistoName,
479  psEffic_pt_zoom.getParameter<int32_t>("Nbinsx"),
480  psEffic_pt_zoom.getParameter<double>("xmin"),
481  psEffic_pt_zoom.getParameter<double>("xmax"));
482  tp_pt_zoom->setAxisTitle("p_{T} [GeV]", 1);
483  tp_pt_zoom->setAxisTitle("# tracking particles", 2);
484 
485  // Matched pT zoom (0-10 GeV)
486  HistoName = "match_tp_pt_zoom";
487  match_tp_pt_zoom = iBooker.book1D(HistoName,
488  HistoName,
489  psEffic_pt_zoom.getParameter<int32_t>("Nbinsx"),
490  psEffic_pt_zoom.getParameter<double>("xmin"),
491  psEffic_pt_zoom.getParameter<double>("xmax"));
492  match_tp_pt_zoom->setAxisTitle("p_{T} [GeV]", 1);
493  match_tp_pt_zoom->setAxisTitle("# matched tracking particles", 2);
494 
495  // eta
496  edm::ParameterSet psEffic_eta = conf_.getParameter<edm::ParameterSet>("TH1Effic_eta");
497  HistoName = "tp_eta";
498  tp_eta = iBooker.book1D(HistoName,
499  HistoName,
500  psEffic_eta.getParameter<int32_t>("Nbinsx"),
501  psEffic_eta.getParameter<double>("xmin"),
502  psEffic_eta.getParameter<double>("xmax"));
503  tp_eta->setAxisTitle("#eta", 1);
504  tp_eta->setAxisTitle("# tracking particles", 2);
505 
506  // Matched eta
507  HistoName = "match_tp_eta";
508  match_tp_eta = iBooker.book1D(HistoName,
509  HistoName,
510  psEffic_eta.getParameter<int32_t>("Nbinsx"),
511  psEffic_eta.getParameter<double>("xmin"),
512  psEffic_eta.getParameter<double>("xmax"));
513  match_tp_eta->setAxisTitle("#eta", 1);
514  match_tp_eta->setAxisTitle("# matched tracking particles", 2);
515 
516  // d0
517  edm::ParameterSet psEffic_d0 = conf_.getParameter<edm::ParameterSet>("TH1Effic_d0");
518  HistoName = "tp_d0";
519  tp_d0 = iBooker.book1D(HistoName,
520  HistoName,
521  psEffic_d0.getParameter<int32_t>("Nbinsx"),
522  psEffic_d0.getParameter<double>("xmin"),
523  psEffic_d0.getParameter<double>("xmax"));
524  tp_d0->setAxisTitle("d_{0} [cm]", 1);
525  tp_d0->setAxisTitle("# tracking particles", 2);
526 
527  // Matched d0
528  HistoName = "match_tp_d0";
529  match_tp_d0 = iBooker.book1D(HistoName,
530  HistoName,
531  psEffic_d0.getParameter<int32_t>("Nbinsx"),
532  psEffic_d0.getParameter<double>("xmin"),
533  psEffic_d0.getParameter<double>("xmax"));
534  match_tp_d0->setAxisTitle("d_{0} [cm]", 1);
535  match_tp_d0->setAxisTitle("# matched tracking particles", 2);
536 
537  // VtxR (also known as vxy)
538  edm::ParameterSet psEffic_VtxR = conf_.getParameter<edm::ParameterSet>("TH1Effic_VtxR");
539  HistoName = "tp_VtxR";
540  tp_VtxR = iBooker.book1D(HistoName,
541  HistoName,
542  psEffic_VtxR.getParameter<int32_t>("Nbinsx"),
543  psEffic_VtxR.getParameter<double>("xmin"),
544  psEffic_VtxR.getParameter<double>("xmax"));
545  tp_VtxR->setAxisTitle("d_{xy} [cm]", 1);
546  tp_VtxR->setAxisTitle("# tracking particles", 2);
547 
548  // Matched VtxR
549  HistoName = "match_tp_VtxR";
550  match_tp_VtxR = iBooker.book1D(HistoName,
551  HistoName,
552  psEffic_VtxR.getParameter<int32_t>("Nbinsx"),
553  psEffic_VtxR.getParameter<double>("xmin"),
554  psEffic_VtxR.getParameter<double>("xmax"));
555  match_tp_VtxR->setAxisTitle("d_{xy} [cm]", 1);
556  match_tp_VtxR->setAxisTitle("# matched tracking particles", 2);
557 
558  // VtxZ
559  edm::ParameterSet psEffic_VtxZ = conf_.getParameter<edm::ParameterSet>("TH1Effic_VtxZ");
560  HistoName = "tp_VtxZ";
561  tp_VtxZ = iBooker.book1D(HistoName,
562  HistoName,
563  psEffic_VtxZ.getParameter<int32_t>("Nbinsx"),
564  psEffic_VtxZ.getParameter<double>("xmin"),
565  psEffic_VtxZ.getParameter<double>("xmax"));
566  tp_VtxZ->setAxisTitle("z_{0} [cm]", 1);
567  tp_VtxZ->setAxisTitle("# tracking particles", 2);
568 
569  // Matched d0
570  HistoName = "match_tp_VtxZ";
571  match_tp_VtxZ = iBooker.book1D(HistoName,
572  HistoName,
573  psEffic_VtxZ.getParameter<int32_t>("Nbinsx"),
574  psEffic_VtxZ.getParameter<double>("xmin"),
575  psEffic_VtxZ.getParameter<double>("xmax"));
576  match_tp_VtxZ->setAxisTitle("z_{0} [cm]", 1);
577  match_tp_VtxZ->setAxisTitle("# matched tracking particles", 2);
578 
579  // 1D plots for resolution
580  iBooker.setCurrentFolder(topFolderName_ + "/Tracks/Resolution");
581  // full pT
582  edm::ParameterSet psRes_pt = conf_.getParameter<edm::ParameterSet>("TH1Res_pt");
583  HistoName = "res_pt";
584  res_pt = iBooker.book1D(HistoName,
585  HistoName,
586  psRes_pt.getParameter<int32_t>("Nbinsx"),
587  psRes_pt.getParameter<double>("xmin"),
588  psRes_pt.getParameter<double>("xmax"));
589  res_pt->setAxisTitle("p_{T} [GeV]", 1);
590  res_pt->setAxisTitle("# tracking particles", 2);
591 
592  // Full eta
593  edm::ParameterSet psRes_eta = conf_.getParameter<edm::ParameterSet>("TH1Res_eta");
594  HistoName = "res_eta";
595  res_eta = iBooker.book1D(HistoName,
596  HistoName,
597  psRes_eta.getParameter<int32_t>("Nbinsx"),
598  psRes_eta.getParameter<double>("xmin"),
599  psRes_eta.getParameter<double>("xmax"));
600  res_eta->setAxisTitle("#eta", 1);
601  res_eta->setAxisTitle("# tracking particles", 2);
602 
603  // Relative pT
604  edm::ParameterSet psRes_ptRel = conf_.getParameter<edm::ParameterSet>("TH1Res_ptRel");
605  HistoName = "res_ptRel";
606  res_ptRel = iBooker.book1D(HistoName,
607  HistoName,
608  psRes_ptRel.getParameter<int32_t>("Nbinsx"),
609  psRes_ptRel.getParameter<double>("xmin"),
610  psRes_ptRel.getParameter<double>("xmax"));
611  res_ptRel->setAxisTitle("Relative p_{T} [GeV]", 1);
612  res_ptRel->setAxisTitle("# tracking particles", 2);
613 
614  // Eta parts (for resolution)
615  // Eta 1 (0 to 0.7)
616  HistoName = "reseta_eta0to0p7";
617  reseta_eta0to0p7 = iBooker.book1D(HistoName,
618  HistoName,
619  psRes_eta.getParameter<int32_t>("Nbinsx"),
620  psRes_eta.getParameter<double>("xmin"),
621  psRes_eta.getParameter<double>("xmax"));
622  reseta_eta0to0p7->setAxisTitle("#eta_{trk} - #eta_{tp}", 1);
623  reseta_eta0to0p7->setAxisTitle("# tracking particles", 2);
624 
625  // Eta 2 (0.7 to 1.0)
626  HistoName = "reseta_eta0p7to1";
627  reseta_eta0p7to1 = iBooker.book1D(HistoName,
628  HistoName,
629  psRes_eta.getParameter<int32_t>("Nbinsx"),
630  psRes_eta.getParameter<double>("xmin"),
631  psRes_eta.getParameter<double>("xmax"));
632  reseta_eta0p7to1->setAxisTitle("#eta_{trk} - #eta_{tp}", 1);
633  reseta_eta0p7to1->setAxisTitle("# tracking particles", 2);
634 
635  // Eta 3 (1.0 to 1.2)
636  HistoName = "reseta_eta1to1p2";
637  reseta_eta1to1p2 = iBooker.book1D(HistoName,
638  HistoName,
639  psRes_eta.getParameter<int32_t>("Nbinsx"),
640  psRes_eta.getParameter<double>("xmin"),
641  psRes_eta.getParameter<double>("xmax"));
642  reseta_eta1to1p2->setAxisTitle("#eta_{trk} - #eta_{tp}", 1);
643  reseta_eta1to1p2->setAxisTitle("# tracking particles", 2);
644 
645  // Eta 4 (1.2 to 1.6)
646  HistoName = "reseta_eta1p2to1p6";
647  reseta_eta1p2to1p6 = iBooker.book1D(HistoName,
648  HistoName,
649  psRes_eta.getParameter<int32_t>("Nbinsx"),
650  psRes_eta.getParameter<double>("xmin"),
651  psRes_eta.getParameter<double>("xmax"));
652  reseta_eta1p2to1p6->setAxisTitle("#eta_{trk} - #eta_{tp}", 1);
653  reseta_eta1p2to1p6->setAxisTitle("# tracking particles", 2);
654 
655  // Eta 5 (1.6 to 2.0)
656  HistoName = "reseta_eta1p6to2";
657  reseta_eta1p6to2 = iBooker.book1D(HistoName,
658  HistoName,
659  psRes_eta.getParameter<int32_t>("Nbinsx"),
660  psRes_eta.getParameter<double>("xmin"),
661  psRes_eta.getParameter<double>("xmax"));
662  reseta_eta1p6to2->setAxisTitle("#eta_{trk} - #eta_{tp}", 1);
663  reseta_eta1p6to2->setAxisTitle("# tracking particles", 2);
664 
665  // Eta 6 (2.0 to 2.4)
666  HistoName = "reseta_eta2to2p4";
667  reseta_eta2to2p4 = iBooker.book1D(HistoName,
668  HistoName,
669  psRes_eta.getParameter<int32_t>("Nbinsx"),
670  psRes_eta.getParameter<double>("xmin"),
671  psRes_eta.getParameter<double>("xmax"));
672  reseta_eta2to2p4->setAxisTitle("#eta_{trk} - #eta_{tp}", 1);
673  reseta_eta2to2p4->setAxisTitle("# tracking particles", 2);
674 
675  // pT parts for resolution (pT res vs eta)
676  // pT a (2 to 3 GeV)
677  // Eta 1 (0 to 0.7)
678  HistoName = "respt_eta0to0p7_pt2to3";
679  respt_eta0to0p7_pt2to3 = iBooker.book1D(HistoName,
680  HistoName,
681  psRes_pt.getParameter<int32_t>("Nbinsx"),
682  psRes_pt.getParameter<double>("xmin"),
683  psRes_pt.getParameter<double>("xmax"));
684  respt_eta0to0p7_pt2to3->setAxisTitle("(p_{T}(trk) - p_{T}(tp))/p_{T}(tp)", 1);
685  respt_eta0to0p7_pt2to3->setAxisTitle("# tracking particles", 2);
686 
687  // Eta 2 (0.7 to 1.0)
688  HistoName = "respt_eta0p7to1_pt2to3";
689  respt_eta0p7to1_pt2to3 = iBooker.book1D(HistoName,
690  HistoName,
691  psRes_pt.getParameter<int32_t>("Nbinsx"),
692  psRes_pt.getParameter<double>("xmin"),
693  psRes_pt.getParameter<double>("xmax"));
694  respt_eta0p7to1_pt2to3->setAxisTitle("(p_{T}(trk) - p_{T}(tp))/p_{T}(tp)", 1);
695  respt_eta0p7to1_pt2to3->setAxisTitle("# tracking particles", 2);
696 
697  // Eta 3 (1.0 to 1.2)
698  HistoName = "respt_eta1to1p2_pt2to3";
699  respt_eta1to1p2_pt2to3 = iBooker.book1D(HistoName,
700  HistoName,
701  psRes_pt.getParameter<int32_t>("Nbinsx"),
702  psRes_pt.getParameter<double>("xmin"),
703  psRes_pt.getParameter<double>("xmax"));
704  respt_eta1to1p2_pt2to3->setAxisTitle("(p_{T}(trk) - p_{T}(tp))/p_{T}(tp)", 1);
705  respt_eta1to1p2_pt2to3->setAxisTitle("# tracking particles", 2);
706 
707  // Eta 4 (1.2 to 1.6)
708  HistoName = "respt_eta1p2to1p6_pt2to3";
709  respt_eta1p2to1p6_pt2to3 = iBooker.book1D(HistoName,
710  HistoName,
711  psRes_pt.getParameter<int32_t>("Nbinsx"),
712  psRes_pt.getParameter<double>("xmin"),
713  psRes_pt.getParameter<double>("xmax"));
714  respt_eta1p2to1p6_pt2to3->setAxisTitle("(p_{T}(trk) - p_{T}(tp))/p_{T}(tp)", 1);
715  respt_eta1p2to1p6_pt2to3->setAxisTitle("# tracking particles", 2);
716 
717  // Eta 5 (1.6 to 2.0)
718  HistoName = "respt_eta1p6to2_pt2to3";
719  respt_eta1p6to2_pt2to3 = iBooker.book1D(HistoName,
720  HistoName,
721  psRes_pt.getParameter<int32_t>("Nbinsx"),
722  psRes_pt.getParameter<double>("xmin"),
723  psRes_pt.getParameter<double>("xmax"));
724  respt_eta1p6to2_pt2to3->setAxisTitle("(p_{T}(trk) - p_{T}(tp))/p_{T}(tp)", 1);
725  respt_eta1p6to2_pt2to3->setAxisTitle("# tracking particles", 2);
726 
727  // Eta 6 (2.0 to 2.4)
728  HistoName = "respt_eta2to2p4_pt2to3";
729  respt_eta2to2p4_pt2to3 = iBooker.book1D(HistoName,
730  HistoName,
731  psRes_pt.getParameter<int32_t>("Nbinsx"),
732  psRes_pt.getParameter<double>("xmin"),
733  psRes_pt.getParameter<double>("xmax"));
734  respt_eta2to2p4_pt2to3->setAxisTitle("(p_{T}(trk) - p_{T}(tp))/p_{T}(tp)", 1);
735  respt_eta2to2p4_pt2to3->setAxisTitle("# tracking particles", 2);
736 
737  // pT b (3 to 8 GeV)
738  // Eta 1 (0 to 0.7)
739  HistoName = "respt_eta0to0p7_pt3to8";
740  respt_eta0to0p7_pt3to8 = iBooker.book1D(HistoName,
741  HistoName,
742  psRes_pt.getParameter<int32_t>("Nbinsx"),
743  psRes_pt.getParameter<double>("xmin"),
744  psRes_pt.getParameter<double>("xmax"));
745  respt_eta0to0p7_pt3to8->setAxisTitle("(p_{T}(trk) - p_{T}(tp))/p_{T}(tp)", 1);
746  respt_eta0to0p7_pt3to8->setAxisTitle("# tracking particles", 2);
747 
748  // Eta 2 (0.7 to 1.0)
749  HistoName = "respt_eta0p7to1_pt3to8";
750  respt_eta0p7to1_pt3to8 = iBooker.book1D(HistoName,
751  HistoName,
752  psRes_pt.getParameter<int32_t>("Nbinsx"),
753  psRes_pt.getParameter<double>("xmin"),
754  psRes_pt.getParameter<double>("xmax"));
755  respt_eta0p7to1_pt3to8->setAxisTitle("(p_{T}(trk) - p_{T}(tp))/p_{T}(tp)", 1);
756  respt_eta0p7to1_pt3to8->setAxisTitle("# tracking particles", 2);
757 
758  // Eta 3 (1.0 to 1.2)
759  HistoName = "respt_eta1to1p2_pt3to8";
760  respt_eta1to1p2_pt3to8 = iBooker.book1D(HistoName,
761  HistoName,
762  psRes_pt.getParameter<int32_t>("Nbinsx"),
763  psRes_pt.getParameter<double>("xmin"),
764  psRes_pt.getParameter<double>("xmax"));
765  respt_eta1to1p2_pt3to8->setAxisTitle("(p_{T}(trk) - p_{T}(tp))/p_{T}(tp)", 1);
766  respt_eta1to1p2_pt3to8->setAxisTitle("# tracking particles", 2);
767 
768  // Eta 4 (1.2 to 1.6)
769  HistoName = "respt_eta1p2to1p6_pt3to8";
770  respt_eta1p2to1p6_pt3to8 = iBooker.book1D(HistoName,
771  HistoName,
772  psRes_pt.getParameter<int32_t>("Nbinsx"),
773  psRes_pt.getParameter<double>("xmin"),
774  psRes_pt.getParameter<double>("xmax"));
775  respt_eta1p2to1p6_pt3to8->setAxisTitle("(p_{T}(trk) - p_{T}(tp))/p_{T}(tp)", 1);
776  respt_eta1p2to1p6_pt3to8->setAxisTitle("# tracking particles", 2);
777 
778  // Eta 5 (1.6 to 2.0)
779  HistoName = "respt_eta1p6to2_pt3to8";
780  respt_eta1p6to2_pt3to8 = iBooker.book1D(HistoName,
781  HistoName,
782  psRes_pt.getParameter<int32_t>("Nbinsx"),
783  psRes_pt.getParameter<double>("xmin"),
784  psRes_pt.getParameter<double>("xmax"));
785  respt_eta1p6to2_pt3to8->setAxisTitle("(p_{T}(trk) - p_{T}(tp))/p_{T}(tp)", 1);
786  respt_eta1p6to2_pt3to8->setAxisTitle("# tracking particles", 2);
787 
788  // Eta 6 (2.0 to 2.4)
789  HistoName = "respt_eta2to2p4_pt3to8";
790  respt_eta2to2p4_pt3to8 = iBooker.book1D(HistoName,
791  HistoName,
792  psRes_pt.getParameter<int32_t>("Nbinsx"),
793  psRes_pt.getParameter<double>("xmin"),
794  psRes_pt.getParameter<double>("xmax"));
795  respt_eta2to2p4_pt3to8->setAxisTitle("(p_{T}(trk) - p_{T}(tp))/p_{T}(tp)", 1);
796  respt_eta2to2p4_pt3to8->setAxisTitle("# tracking particles", 2);
797 
798  // pT c (>8 GeV)
799  // Eta 1 (0 to 0.7)
800  HistoName = "respt_eta0to0p7_pt8toInf";
801  respt_eta0to0p7_pt8toInf = iBooker.book1D(HistoName,
802  HistoName,
803  psRes_pt.getParameter<int32_t>("Nbinsx"),
804  psRes_pt.getParameter<double>("xmin"),
805  psRes_pt.getParameter<double>("xmax"));
806  respt_eta0to0p7_pt8toInf->setAxisTitle("(p_{T}(trk) - p_{T}(tp))/p_{T}(tp)", 1);
807  respt_eta0to0p7_pt8toInf->setAxisTitle("# tracking particles", 2);
808 
809  // Eta 2 (0.7 to 1.0)
810  HistoName = "respt_eta0p7to1_pt8toInf";
811  respt_eta0p7to1_pt8toInf = iBooker.book1D(HistoName,
812  HistoName,
813  psRes_pt.getParameter<int32_t>("Nbinsx"),
814  psRes_pt.getParameter<double>("xmin"),
815  psRes_pt.getParameter<double>("xmax"));
816  respt_eta0p7to1_pt8toInf->setAxisTitle("(p_{T}(trk) - p_{T}(tp))/p_{T}(tp)", 1);
817  respt_eta0p7to1_pt8toInf->setAxisTitle("# tracking particles", 2);
818 
819  // Eta 3 (1.0 to 1.2)
820  HistoName = "respt_eta1to1p2_pt8toInf";
821  respt_eta1to1p2_pt8toInf = iBooker.book1D(HistoName,
822  HistoName,
823  psRes_pt.getParameter<int32_t>("Nbinsx"),
824  psRes_pt.getParameter<double>("xmin"),
825  psRes_pt.getParameter<double>("xmax"));
826  respt_eta1to1p2_pt8toInf->setAxisTitle("(p_{T}(trk) - p_{T}(tp))/p_{T}(tp)", 1);
827  respt_eta1to1p2_pt8toInf->setAxisTitle("# tracking particles", 2);
828 
829  // Eta 4 (1.2 to 1.6)
830  HistoName = "respt_eta1p2to1p6_pt8toInf";
831  respt_eta1p2to1p6_pt8toInf = iBooker.book1D(HistoName,
832  HistoName,
833  psRes_pt.getParameter<int32_t>("Nbinsx"),
834  psRes_pt.getParameter<double>("xmin"),
835  psRes_pt.getParameter<double>("xmax"));
836  respt_eta1p2to1p6_pt8toInf->setAxisTitle("(p_{T}(trk) - p_{T}(tp))/p_{T}(tp)", 1);
837  respt_eta1p2to1p6_pt8toInf->setAxisTitle("# tracking particles", 2);
838 
839  // Eta 5 (1.6 to 2.0)
840  HistoName = "respt_eta1p6to2_pt8toInf";
841  respt_eta1p6to2_pt8toInf = iBooker.book1D(HistoName,
842  HistoName,
843  psRes_pt.getParameter<int32_t>("Nbinsx"),
844  psRes_pt.getParameter<double>("xmin"),
845  psRes_pt.getParameter<double>("xmax"));
846  respt_eta1p6to2_pt8toInf->setAxisTitle("(p_{T}(trk) - p_{T}(tp))/p_{T}(tp)", 1);
847  respt_eta1p6to2_pt8toInf->setAxisTitle("# tracking particles", 2);
848 
849  // Eta 6 (2.0 to 2.4)
850  HistoName = "respt_eta2to2p4_pt8toInf";
851  respt_eta2to2p4_pt8toInf = iBooker.book1D(HistoName,
852  HistoName,
853  psRes_pt.getParameter<int32_t>("Nbinsx"),
854  psRes_pt.getParameter<double>("xmin"),
855  psRes_pt.getParameter<double>("xmax"));
856  respt_eta2to2p4_pt8toInf->setAxisTitle("(p_{T}(trk) - p_{T}(tp))/p_{T}(tp)", 1);
857  respt_eta2to2p4_pt8toInf->setAxisTitle("# tracking particles", 2);
858 
859  // Phi parts (for resolution)
860  // Eta 1 (0 to 0.7)
861  edm::ParameterSet psRes_phi = conf_.getParameter<edm::ParameterSet>("TH1Res_phi");
862  HistoName = "resphi_eta0to0p7";
863  resphi_eta0to0p7 = iBooker.book1D(HistoName,
864  HistoName,
865  psRes_phi.getParameter<int32_t>("Nbinsx"),
866  psRes_phi.getParameter<double>("xmin"),
867  psRes_phi.getParameter<double>("xmax"));
868  resphi_eta0to0p7->setAxisTitle("#phi_{trk} - #phi_{tp}", 1);
869  resphi_eta0to0p7->setAxisTitle("# tracking particles", 2);
870 
871  // Eta 2 (0.7 to 1.0)
872  HistoName = "resphi_eta0p7to1";
873  resphi_eta0p7to1 = iBooker.book1D(HistoName,
874  HistoName,
875  psRes_phi.getParameter<int32_t>("Nbinsx"),
876  psRes_phi.getParameter<double>("xmin"),
877  psRes_phi.getParameter<double>("xmax"));
878  resphi_eta0p7to1->setAxisTitle("#phi_{trk} - #phi_{tp}", 1);
879  resphi_eta0p7to1->setAxisTitle("# tracking particles", 2);
880 
881  // Eta 3 (1.0 to 1.2)
882  HistoName = "resphi_eta1to1p2";
883  resphi_eta1to1p2 = iBooker.book1D(HistoName,
884  HistoName,
885  psRes_phi.getParameter<int32_t>("Nbinsx"),
886  psRes_phi.getParameter<double>("xmin"),
887  psRes_phi.getParameter<double>("xmax"));
888  resphi_eta1to1p2->setAxisTitle("#phi_{trk} - #phi_{tp}", 1);
889  resphi_eta1to1p2->setAxisTitle("# tracking particles", 2);
890 
891  // Eta 4 (1.2 to 1.6)
892  HistoName = "resphi_eta1p2to1p6";
893  resphi_eta1p2to1p6 = iBooker.book1D(HistoName,
894  HistoName,
895  psRes_phi.getParameter<int32_t>("Nbinsx"),
896  psRes_phi.getParameter<double>("xmin"),
897  psRes_phi.getParameter<double>("xmax"));
898  resphi_eta1p2to1p6->setAxisTitle("#phi_{trk} - #phi_{tp}", 1);
899  resphi_eta1p2to1p6->setAxisTitle("# tracking particles", 2);
900 
901  // Eta 5 (1.6 to 2.0)
902  HistoName = "resphi_eta1p6to2";
903  resphi_eta1p6to2 = iBooker.book1D(HistoName,
904  HistoName,
905  psRes_phi.getParameter<int32_t>("Nbinsx"),
906  psRes_phi.getParameter<double>("xmin"),
907  psRes_phi.getParameter<double>("xmax"));
908  resphi_eta1p6to2->setAxisTitle("#phi_{trk} - #phi_{tp}", 1);
909  resphi_eta1p6to2->setAxisTitle("# tracking particles", 2);
910 
911  // Eta 6 (2.0 to 2.4)
912  HistoName = "resphi_eta2to2p4";
913  resphi_eta2to2p4 = iBooker.book1D(HistoName,
914  HistoName,
915  psRes_phi.getParameter<int32_t>("Nbinsx"),
916  psRes_phi.getParameter<double>("xmin"),
917  psRes_phi.getParameter<double>("xmax"));
918  resphi_eta2to2p4->setAxisTitle("#phi_{trk} - #phi_{tp}", 1);
919  resphi_eta2to2p4->setAxisTitle("# tracking particles", 2);
920 
921  // VtxZ parts (for resolution)
922  // Eta 1 (0 to 0.7)
923  edm::ParameterSet psRes_VtxZ = conf_.getParameter<edm::ParameterSet>("TH1Res_VtxZ");
924  HistoName = "resVtxZ_eta0to0p7";
925  resVtxZ_eta0to0p7 = iBooker.book1D(HistoName,
926  HistoName,
927  psRes_VtxZ.getParameter<int32_t>("Nbinsx"),
928  psRes_VtxZ.getParameter<double>("xmin"),
929  psRes_VtxZ.getParameter<double>("xmax"));
930  resVtxZ_eta0to0p7->setAxisTitle("VtxZ_{trk} - VtxZ_{tp} [cm]", 1);
931  resVtxZ_eta0to0p7->setAxisTitle("# tracking particles", 2);
932 
933  // Eta 2 (0.7 to 1.0)
934  HistoName = "resVtxZ_eta0p7to1";
935  resVtxZ_eta0p7to1 = iBooker.book1D(HistoName,
936  HistoName,
937  psRes_VtxZ.getParameter<int32_t>("Nbinsx"),
938  psRes_VtxZ.getParameter<double>("xmin"),
939  psRes_VtxZ.getParameter<double>("xmax"));
940  resVtxZ_eta0p7to1->setAxisTitle("VtxZ_{trk} - VtxZ_{tp} [cm]", 1);
941  resVtxZ_eta0p7to1->setAxisTitle("# tracking particles", 2);
942 
943  // Eta 3 (1.0 to 1.2)
944  HistoName = "resVtxZ_eta1to1p2";
945  resVtxZ_eta1to1p2 = iBooker.book1D(HistoName,
946  HistoName,
947  psRes_VtxZ.getParameter<int32_t>("Nbinsx"),
948  psRes_VtxZ.getParameter<double>("xmin"),
949  psRes_VtxZ.getParameter<double>("xmax"));
950  resVtxZ_eta1to1p2->setAxisTitle("VtxZ_{trk} - VtxZ_{tp} [cm]", 1);
951  resVtxZ_eta1to1p2->setAxisTitle("# tracking particles", 2);
952 
953  // Eta 4 (1.2 to 1.6)
954  HistoName = "resVtxZ_eta1p2to1p6";
955  resVtxZ_eta1p2to1p6 = iBooker.book1D(HistoName,
956  HistoName,
957  psRes_VtxZ.getParameter<int32_t>("Nbinsx"),
958  psRes_VtxZ.getParameter<double>("xmin"),
959  psRes_VtxZ.getParameter<double>("xmax"));
960  resVtxZ_eta1p2to1p6->setAxisTitle("VtxZ_{trk} - VtxZ_{tp} [cm]", 1);
961  resVtxZ_eta1p2to1p6->setAxisTitle("# tracking particles", 2);
962 
963  // Eta 5 (1.6 to 2.0)
964  HistoName = "resVtxZ_eta1p6to2";
965  resVtxZ_eta1p6to2 = iBooker.book1D(HistoName,
966  HistoName,
967  psRes_VtxZ.getParameter<int32_t>("Nbinsx"),
968  psRes_VtxZ.getParameter<double>("xmin"),
969  psRes_VtxZ.getParameter<double>("xmax"));
970  resVtxZ_eta1p6to2->setAxisTitle("VtxZ_{trk} - VtxZ_{tp} [cm]", 1);
971  resVtxZ_eta1p6to2->setAxisTitle("# tracking particles", 2);
972 
973  // Eta 6 (2.0 to 2.4)
974  HistoName = "resVtxZ_eta2to2p4";
975  resVtxZ_eta2to2p4 = iBooker.book1D(HistoName,
976  HistoName,
977  psRes_VtxZ.getParameter<int32_t>("Nbinsx"),
978  psRes_VtxZ.getParameter<double>("xmin"),
979  psRes_VtxZ.getParameter<double>("xmax"));
980  resVtxZ_eta2to2p4->setAxisTitle("VtxZ_{trk} - VtxZ_{tp} [cm]", 1);
981  resVtxZ_eta2to2p4->setAxisTitle("# tracking particles", 2);
982 
983  // d0 parts (for resolution)
984  // Eta 1 (0 to 0.7)
985  edm::ParameterSet psRes_d0 = conf_.getParameter<edm::ParameterSet>("TH1Res_d0");
986  HistoName = "resd0_eta0to0p7";
987  resd0_eta0to0p7 = iBooker.book1D(HistoName,
988  HistoName,
989  psRes_d0.getParameter<int32_t>("Nbinsx"),
990  psRes_d0.getParameter<double>("xmin"),
991  psRes_d0.getParameter<double>("xmax"));
992  resd0_eta0to0p7->setAxisTitle("d0_{trk} - d0_{tp} [cm]", 1);
993  resd0_eta0to0p7->setAxisTitle("# tracking particles", 2);
994 
995  // Eta 2 (0.7 to 1.0)
996  HistoName = "resd0_eta0p7to1";
997  resd0_eta0p7to1 = iBooker.book1D(HistoName,
998  HistoName,
999  psRes_d0.getParameter<int32_t>("Nbinsx"),
1000  psRes_d0.getParameter<double>("xmin"),
1001  psRes_d0.getParameter<double>("xmax"));
1002  resd0_eta0p7to1->setAxisTitle("d0_{trk} - d0_{tp} [cm]", 1);
1003  resd0_eta0p7to1->setAxisTitle("# tracking particles", 2);
1004 
1005  // Eta 3 (1.0 to 1.2)
1006  HistoName = "resd0_eta1to1p2";
1007  resd0_eta1to1p2 = iBooker.book1D(HistoName,
1008  HistoName,
1009  psRes_d0.getParameter<int32_t>("Nbinsx"),
1010  psRes_d0.getParameter<double>("xmin"),
1011  psRes_d0.getParameter<double>("xmax"));
1012  resd0_eta1to1p2->setAxisTitle("d0_{trk} - d0_{tp} [cm]", 1);
1013  resd0_eta1to1p2->setAxisTitle("# tracking particles", 2);
1014 
1015  // Eta 4 (1.2 to 1.6)
1016  HistoName = "resd0_eta1p2to1p6";
1017  resd0_eta1p2to1p6 = iBooker.book1D(HistoName,
1018  HistoName,
1019  psRes_d0.getParameter<int32_t>("Nbinsx"),
1020  psRes_d0.getParameter<double>("xmin"),
1021  psRes_d0.getParameter<double>("xmax"));
1022  resd0_eta1p2to1p6->setAxisTitle("d0_{trk} - d0_{tp} [cm]", 1);
1023  resd0_eta1p2to1p6->setAxisTitle("# tracking particles", 2);
1024 
1025  // Eta 5 (1.6 to 2.0)
1026  HistoName = "resd0_eta1p6to2";
1027  resd0_eta1p6to2 = iBooker.book1D(HistoName,
1028  HistoName,
1029  psRes_d0.getParameter<int32_t>("Nbinsx"),
1030  psRes_d0.getParameter<double>("xmin"),
1031  psRes_d0.getParameter<double>("xmax"));
1032  resd0_eta1p6to2->setAxisTitle("d0_{trk} - d0_{tp} [cm]", 1);
1033  resd0_eta1p6to2->setAxisTitle("# tracking particles", 2);
1034 
1035  // Eta 6 (2.0 to 2.4)
1036  HistoName = "resd0_eta2to2p4";
1037  resd0_eta2to2p4 = iBooker.book1D(HistoName,
1038  HistoName,
1039  psRes_d0.getParameter<int32_t>("Nbinsx"),
1040  psRes_d0.getParameter<double>("xmin"),
1041  psRes_d0.getParameter<double>("xmax"));
1042  resd0_eta2to2p4->setAxisTitle("d0_{trk} - d0_{tp} [cm]", 1);
1043  resd0_eta2to2p4->setAxisTitle("# tracking particles", 2);
1044 
1045 } // end of method
T getParameter(std::string const &) const
std::string HistoName
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)

Member Data Documentation

edm::ParameterSet OuterTrackerMonitorTrackingParticles::conf_
private
double OuterTrackerMonitorTrackingParticles::L1Tk_maxChi2
private
double OuterTrackerMonitorTrackingParticles::L1Tk_maxChi2dof
private
int OuterTrackerMonitorTrackingParticles::L1Tk_minNStub
private
int OuterTrackerMonitorTrackingParticles::L1Tk_nPar
private
MonitorElement* OuterTrackerMonitorTrackingParticles::match_tp_d0 = 0

Definition at line 50 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::match_tp_eta = 0

Definition at line 49 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::match_tp_pt = 0

Definition at line 47 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::match_tp_pt_zoom = 0

Definition at line 48 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::match_tp_VtxR = 0

Definition at line 51 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::match_tp_VtxZ = 0

Definition at line 52 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::res_eta = 0

Definition at line 55 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::res_pt = 0

Definition at line 56 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::res_ptRel = 0

Definition at line 57 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::resd0_eta0p7to1 = 0

Definition at line 97 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::resd0_eta0to0p7 = 0

Definition at line 96 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::resd0_eta1p2to1p6 = 0

Definition at line 99 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::resd0_eta1p6to2 = 0

Definition at line 100 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::resd0_eta1to1p2 = 0

Definition at line 98 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::resd0_eta2to2p4 = 0

Definition at line 101 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::reseta_eta0p7to1 = 0

Definition at line 77 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::reseta_eta0to0p7 = 0

Definition at line 76 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::reseta_eta1p2to1p6 = 0

Definition at line 79 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::reseta_eta1p6to2 = 0

Definition at line 80 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::reseta_eta1to1p2 = 0

Definition at line 78 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::reseta_eta2to2p4 = 0

Definition at line 81 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::resphi_eta0p7to1 = 0

Definition at line 83 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::resphi_eta0to0p7 = 0

Definition at line 82 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::resphi_eta1p2to1p6 = 0

Definition at line 85 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::resphi_eta1p6to2 = 0

Definition at line 86 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::resphi_eta1to1p2 = 0

Definition at line 84 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::resphi_eta2to2p4 = 0

Definition at line 87 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::respt_eta0p7to1_pt2to3 = 0

Definition at line 59 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::respt_eta0p7to1_pt3to8 = 0

Definition at line 65 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::respt_eta0p7to1_pt8toInf = 0

Definition at line 71 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::respt_eta0to0p7_pt2to3 = 0

Definition at line 58 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::respt_eta0to0p7_pt3to8 = 0

Definition at line 64 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::respt_eta0to0p7_pt8toInf = 0

Definition at line 70 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::respt_eta1p2to1p6_pt2to3 = 0

Definition at line 61 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::respt_eta1p2to1p6_pt3to8 = 0

Definition at line 67 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::respt_eta1p2to1p6_pt8toInf = 0

Definition at line 73 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::respt_eta1p6to2_pt2to3 = 0

Definition at line 62 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::respt_eta1p6to2_pt3to8 = 0

Definition at line 68 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::respt_eta1p6to2_pt8toInf = 0

Definition at line 74 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::respt_eta1to1p2_pt2to3 = 0

Definition at line 60 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::respt_eta1to1p2_pt3to8 = 0

Definition at line 66 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::respt_eta1to1p2_pt8toInf = 0

Definition at line 72 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::respt_eta2to2p4_pt2to3 = 0

Definition at line 63 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::respt_eta2to2p4_pt3to8 = 0

Definition at line 69 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::respt_eta2to2p4_pt8toInf = 0

Definition at line 75 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::resVtxZ_eta0p7to1 = 0

Definition at line 89 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::resVtxZ_eta0to0p7 = 0

Definition at line 88 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::resVtxZ_eta1p2to1p6 = 0

Definition at line 91 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::resVtxZ_eta1p6to2 = 0

Definition at line 92 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::resVtxZ_eta1to1p2 = 0

Definition at line 90 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::resVtxZ_eta2to2p4 = 0

Definition at line 93 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

std::string OuterTrackerMonitorTrackingParticles::topFolderName_
private
MonitorElement* OuterTrackerMonitorTrackingParticles::tp_d0 = 0

Definition at line 44 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::tp_eta = 0

Definition at line 43 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

double OuterTrackerMonitorTrackingParticles::TP_maxEta
private
double OuterTrackerMonitorTrackingParticles::TP_maxPt
private
double OuterTrackerMonitorTrackingParticles::TP_maxVtxZ
private
int OuterTrackerMonitorTrackingParticles::TP_minNLayersStub
private
int OuterTrackerMonitorTrackingParticles::TP_minNStub
private
double OuterTrackerMonitorTrackingParticles::TP_minPt
private
MonitorElement* OuterTrackerMonitorTrackingParticles::tp_pt = 0

Definition at line 41 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::tp_pt_zoom = 0

Definition at line 42 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

int OuterTrackerMonitorTrackingParticles::TP_select_eventid
private
MonitorElement* OuterTrackerMonitorTrackingParticles::tp_VtxR = 0

Definition at line 45 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::tp_VtxZ = 0

Definition at line 46 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::Track_MatchedChi2 = 0

Definition at line 37 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::Track_MatchedChi2Red = 0

Definition at line 38 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

edm::EDGetTokenT<std::vector<TrackingParticle> > OuterTrackerMonitorTrackingParticles::trackingParticleToken_
private
MonitorElement* OuterTrackerMonitorTrackingParticles::trackParts_Eta = 0

Definition at line 32 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::trackParts_Phi = 0

Definition at line 33 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* OuterTrackerMonitorTrackingParticles::trackParts_Pt = 0

Definition at line 34 of file OuterTrackerMonitorTrackingParticles.h.

Referenced by analyze(), and bookHistograms().

edm::EDGetTokenT<TTClusterAssociationMap<Ref_Phase2TrackerDigi_> > OuterTrackerMonitorTrackingParticles::ttClusterMCTruthToken_
private
edm::EDGetTokenT<TTStubAssociationMap<Ref_Phase2TrackerDigi_> > OuterTrackerMonitorTrackingParticles::ttStubMCTruthToken_
private
edm::EDGetTokenT<TTTrackAssociationMap<Ref_Phase2TrackerDigi_> > OuterTrackerMonitorTrackingParticles::ttTrackMCTruthToken_
private