CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
TrackSplittingMonitor Class Reference

#include <DQM/TrackingMonitor/src/TrackSplittingMonitor.cc>

Inheritance diagram for TrackSplittingMonitor:
DQMEDAnalyzer edm::stream::EDAnalyzer< edm::RunSummaryCache< dqmDetails::NoCache >, edm::LuminosityBlockSummaryCache< dqmDetails::NoCache > > edm::stream::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &)
 
virtual void beginJob (void)
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
virtual void endJob (void)
 
 TrackSplittingMonitor (const edm::ParameterSet &)
 
 ~TrackSplittingMonitor ()
 
- Public Member Functions inherited from DQMEDAnalyzer
virtual void beginRun (edm::Run const &, edm::EventSetup const &) final
 
virtual void beginStream (edm::StreamID id) final
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
 DQMEDAnalyzer (void)
 
virtual void endLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, dqmDetails::NoCache *) const final
 
virtual void endRunSummary (edm::Run const &, edm::EventSetup const &, dqmDetails::NoCache *) const final
 
uint32_t streamId () const
 
- Public Member Functions inherited from edm::stream::EDAnalyzer< edm::RunSummaryCache< dqmDetails::NoCache >, edm::LuminosityBlockSummaryCache< dqmDetails::NoCache > >
 EDAnalyzer ()=default
 
- Public Member Functions inherited from edm::stream::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDAnalyzerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Member Functions

void doProfileX (TH2 *th2, MonitorElement *me)
 
void doProfileX (MonitorElement *th2m, MonitorElement *me)
 

Private Attributes

edm::ParameterSet conf_
 
edm::ESHandle< CSCGeometrycscGeometry
 
double d0Cut_
 
MonitorElementdcurvAbsoluteResiduals_global_
 
MonitorElementdcurvAbsoluteResiduals_tracker_
 
MonitorElementdcurvNormalizedResiduals_global_
 
MonitorElementdcurvNormalizedResiduals_tracker_
 
MonitorElementddxyAbsoluteResiduals_global_
 
MonitorElementddxyAbsoluteResiduals_tracker_
 
MonitorElementddxyNormalizedResiduals_global_
 
MonitorElementddxyNormalizedResiduals_tracker_
 
MonitorElementddzAbsoluteResiduals_global_
 
MonitorElementddzAbsoluteResiduals_tracker_
 
MonitorElementddzNormalizedResiduals_global_
 
MonitorElementddzNormalizedResiduals_tracker_
 
MonitorElementdphiAbsoluteResiduals_global_
 
MonitorElementdphiAbsoluteResiduals_tracker_
 
MonitorElementdphiNormalizedResiduals_global_
 
MonitorElementdphiNormalizedResiduals_tracker_
 
MonitorElementdptAbsoluteResiduals_global_
 
MonitorElementdptAbsoluteResiduals_tracker_
 
MonitorElementdptNormalizedResiduals_global_
 
MonitorElementdptNormalizedResiduals_tracker_
 
DQMStoredqmStore_
 
edm::ESHandle< DTGeometrydtGeometry
 
MonitorElementdthetaAbsoluteResiduals_global_
 
MonitorElementdthetaAbsoluteResiduals_tracker_
 
MonitorElementdthetaNormalizedResiduals_global_
 
MonitorElementdthetaNormalizedResiduals_tracker_
 
double dzCut_
 
std::string histname
 
double norchiCut_
 
int pixelHitsPerLeg_
 
bool plotMuons_
 
double ptCut_
 
edm::ESHandle< RPCGeometryrpcGeometry
 
edm::InputTag splitMuons_
 
edm::EDGetTokenT< std::vector
< reco::Muon > > 
splitMuonsToken_
 
edm::InputTag splitTracks_
 
edm::EDGetTokenT< std::vector
< reco::Track > > 
splitTracksToken_
 
edm::ESHandle< TrackerGeometrytheGeometry
 
edm::ESHandle< MagneticFieldtheMagField
 
int totalHitsPerLeg_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDAnalyzer< edm::RunSummaryCache< dqmDetails::NoCache >, edm::LuminosityBlockSummaryCache< dqmDetails::NoCache > >
typedef CacheContexts< T...> CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T...> HasAbility
 
typedef
CacheTypes::LuminosityBlockCache 
LuminosityBlockCache
 
typedef
LuminosityBlockContextT
< LuminosityBlockCache,
RunCache, GlobalCache
LuminosityBlockContext
 
typedef
CacheTypes::LuminosityBlockSummaryCache 
LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache,
GlobalCache
RunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 
- Public Types inherited from edm::stream::EDAnalyzerBase
typedef EDAnalyzerAdaptorBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from DQMEDAnalyzer
static std::shared_ptr
< dqmDetails::NoCache
globalBeginLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, LuminosityBlockContext const *)
 
static std::shared_ptr
< dqmDetails::NoCache
globalBeginRunSummary (edm::Run const &, edm::EventSetup const &, RunContext const *)
 
static void globalEndLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, LuminosityBlockContext const *, dqmDetails::NoCache *)
 
static void globalEndRunSummary (edm::Run const &, edm::EventSetup const &, RunContext const *, dqmDetails::NoCache *)
 
- Static Public Member Functions inherited from edm::stream::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- 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 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)
 

Detailed Description

Monitoring source for general quantities related to tracks.

Definition at line 45 of file TrackSplittingMonitor.h.

Constructor & Destructor Documentation

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

Definition at line 32 of file TrackSplittingMonitor.cc.

References conf_, edm::ParameterSet::getParameter(), splitMuons_, splitMuonsToken_, splitTracks_, and splitTracksToken_.

34  , conf_( iConfig )
35 {
36 
37  splitTracks_ = conf_.getParameter< edm::InputTag >("splitTrackCollection");
38  splitMuons_ = conf_.getParameter< edm::InputTag >("splitMuonCollection");
39  splitTracksToken_ = consumes<std::vector<reco::Track> >(splitTracks_);
40  splitMuonsToken_ = mayConsume<std::vector<reco::Muon> >(splitMuons_);
41 
42 }
T getParameter(std::string const &) const
edm::EDGetTokenT< std::vector< reco::Muon > > splitMuonsToken_
edm::EDGetTokenT< std::vector< reco::Track > > splitTracksToken_
TrackSplittingMonitor::~TrackSplittingMonitor ( )

Definition at line 44 of file TrackSplittingMonitor.cc.

44  {
45 }

Member Function Documentation

void TrackSplittingMonitor::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
virtual

Implements edm::stream::EDAnalyzerBase.

Definition at line 166 of file TrackSplittingMonitor.cc.

References cscGeometry, reco::TrackBase::d0(), d0Cut_, reco::TrackBase::d0Error(), ddxyAbsoluteResiduals_global_, ddxyAbsoluteResiduals_tracker_, ddxyNormalizedResiduals_global_, ddxyNormalizedResiduals_tracker_, dtGeometry, reco::TrackBase::dz(), dzCut_, reco::TrackBase::dzError(), MonitorElement::Fill(), edm::EventSetup::get(), edm::Event::getByToken(), reco::Muon::globalTrack(), edm::HandleBase::isValid(), norchiCut_, reco::TrackBase::normalizedChi2(), reco::TrackBase::phi(), reco::TrackBase::phiError(), PixelSubdetector::PixelBarrel, pixelHitsPerLeg_, plotMuons_, funct::pow(), reco::TrackBase::pt(), ptCut_, reco::TrackBase::ptError(), reco::Track::recHitsBegin(), reco::Track::recHitsEnd(), rpcGeometry, RecoMuonCosmics_cff::splitMuons, splitMuonsToken_, splitTracksToken_, mathSSE::sqrt(), theGeometry, theMagField, reco::TrackBase::theta(), reco::TrackBase::thetaError(), and totalHitsPerLeg_.

166  {
167 
168 
169  iSetup.get<IdealMagneticFieldRecord>().get(theMagField);
171  iSetup.get<MuonGeometryRecord>().get(dtGeometry);
172  iSetup.get<MuonGeometryRecord>().get(cscGeometry);
173  iSetup.get<MuonGeometryRecord>().get(rpcGeometry);
174 
176  iEvent.getByToken(splitTracksToken_, splitTracks);
177  if (!splitTracks.isValid()) return;
178 
180  if (plotMuons_){
181  iEvent.getByToken(splitMuonsToken_, splitMuons);
182  }
183 
184  if (splitTracks->size() == 2){
185  // check that there are 2 tracks in split track collection
186  edm::LogInfo("TrackSplittingMonitor") << "Split Track size: " << splitTracks->size();
187 
188  // split tracks calculations
189  reco::Track track1 = splitTracks->at(0);
190  reco::Track track2 = splitTracks->at(1);
191 
192 
193  // -------------------------- basic selection ---------------------------
194 
195  // hit counting
196  // looping through the hits for track 1
197  double nRechits1 =0;
198  double nRechitinBPIX1 =0;
199  for (trackingRecHit_iterator iHit = track1.recHitsBegin(); iHit != track1.recHitsEnd(); ++iHit) {
200  if((*iHit)->isValid()) {
201  nRechits1++;
202  int type =(*iHit)->geographicalId().subdetId();
203  if(type==int(PixelSubdetector::PixelBarrel)){++nRechitinBPIX1;}
204  }
205  }
206  // looping through the hits for track 2
207  double nRechits2 =0;
208  double nRechitinBPIX2 =0;
209  for (trackingRecHit_iterator iHit = track2.recHitsBegin(); iHit != track2.recHitsEnd(); ++iHit) {
210  if((*iHit)->isValid()) {
211  nRechits2++;
212  int type =(*iHit)->geographicalId().subdetId();
213  if(type==int(PixelSubdetector::PixelBarrel)){++nRechitinBPIX2;}
214  }
215  }
216 
217  // DCA of each track
218  double d01 = track1.d0();
219  double dz1 = track1.dz();
220  double d02 = track2.d0();
221  double dz2 = track2.dz();
222 
223  // pT of each track
224  double pt1 = track1.pt();
225  double pt2 = track2.pt();
226 
227  // chi2 of each track
228  double norchi1 = track1.normalizedChi2();
229  double norchi2 = track2.normalizedChi2();
230 
231  // basic selection
232  // pixel hits and total hits
233  if ((nRechitinBPIX1 >= pixelHitsPerLeg_)&&(nRechitinBPIX1 >= pixelHitsPerLeg_)&&(nRechits1 >= totalHitsPerLeg_)&&(nRechits2 >= totalHitsPerLeg_)){
234  // dca cut
235  if ( ((fabs(d01) < d0Cut_))&&(fabs(d02) < d0Cut_)&&(fabs(dz2) < dzCut_)&&(fabs(dz2) < dzCut_) ){
236  // pt cut
237  if ( (pt1+pt2)/2 < ptCut_){
238  // chi2 cut
239  if ( (norchi1 < norchiCut_)&&(norchi2 < norchiCut_) ){
240 
241  // passed all cuts...
242  edm::LogInfo("TrackSplittingMonitor") << " Setected after all cuts ?";
243 
244  double ddxyVal = d01 - d02;
245  double ddzVal = dz1 - dz2;
246  double dphiVal = track1.phi() - track2.phi();
247  double dthetaVal = track1.theta() - track2.theta();
248  double dptVal = pt1 - pt2;
249  double dcurvVal = (1/pt1) - (1/pt2);
250 
251  double d01ErrVal = track1.d0Error();
252  double d02ErrVal = track2.d0Error();
253  double dz1ErrVal = track1.dzError();
254  double dz2ErrVal = track2.dzError();
255  double phi1ErrVal = track1.phiError();
256  double phi2ErrVal = track2.phiError();
257  double theta1ErrVal = track1.thetaError();
258  double theta2ErrVal = track2.thetaError();
259  double pt1ErrVal = track1.ptError();
260  double pt2ErrVal = track2.ptError();
261 
262  ddxyAbsoluteResiduals_tracker_->Fill( 10000.0*ddxyVal/sqrt(2.0) );
263  ddxyAbsoluteResiduals_tracker_->Fill( 10000.0*ddzVal/sqrt(2.0) );
264  ddxyAbsoluteResiduals_tracker_->Fill( 1000.0*dphiVal/sqrt(2.0) );
265  ddxyAbsoluteResiduals_tracker_->Fill( 1000.0*dthetaVal/sqrt(2.0) );
266  ddxyAbsoluteResiduals_tracker_->Fill( dptVal/sqrt(2.0) );
267  ddxyAbsoluteResiduals_tracker_->Fill( dcurvVal/sqrt(2.0) );
268 
269  ddxyNormalizedResiduals_tracker_->Fill( ddxyVal/sqrt( d01ErrVal*d01ErrVal + d02ErrVal*d02ErrVal ) );
270  ddxyNormalizedResiduals_tracker_->Fill( ddzVal/sqrt( dz1ErrVal*dz1ErrVal + dz2ErrVal*dz2ErrVal ) );
271  ddxyNormalizedResiduals_tracker_->Fill( dphiVal/sqrt( phi1ErrVal*phi1ErrVal + phi2ErrVal*phi2ErrVal ) );
272  ddxyNormalizedResiduals_tracker_->Fill( dthetaVal/sqrt( theta1ErrVal*theta1ErrVal + theta2ErrVal*theta2ErrVal ) );
273  ddxyNormalizedResiduals_tracker_->Fill( dptVal/sqrt( pt1ErrVal*pt1ErrVal + pt2ErrVal*pt2ErrVal ) );
274  ddxyNormalizedResiduals_tracker_->Fill( dcurvVal/sqrt( pow(pt1ErrVal,2)/pow(pt1,4) + pow(pt2ErrVal,2)/pow(pt2,4) ) );
275 
276  // if do the same for split muons
277  if (plotMuons_ && splitMuons.isValid()){
278 
279  int gmCtr = 0;
280  bool topGlobalMuonFlag = false;
281  bool bottomGlobalMuonFlag = false;
282  int topGlobalMuon = -1;
283  int bottomGlobalMuon = -1;
284  double topGlobalMuonNorchi2 = 1e10;
285  double bottomGlobalMuonNorchi2 = 1e10;
286 
287  // check if usable split global muons
288  for (std::vector<reco::Muon>::const_iterator gmI = splitMuons->begin(); gmI != splitMuons->end(); gmI++){
289  if ( gmI->isTrackerMuon() && gmI->isStandAloneMuon() && gmI->isGlobalMuon() ){
290 
291  reco::TrackRef trackerTrackRef1( splitTracks, 0 );
292  reco::TrackRef trackerTrackRef2( splitTracks, 1 );
293 
294  if (gmI->innerTrack() == trackerTrackRef1){
295  if (gmI->globalTrack()->normalizedChi2() < topGlobalMuonNorchi2){
296  topGlobalMuonFlag = true;
297  topGlobalMuonNorchi2 = gmI->globalTrack()->normalizedChi2();
298  topGlobalMuon = gmCtr;
299  }
300  }
301  if (gmI->innerTrack() == trackerTrackRef2){
302  if (gmI->globalTrack()->normalizedChi2() < bottomGlobalMuonNorchi2){
303  bottomGlobalMuonFlag = true;
304  bottomGlobalMuonNorchi2 = gmI->globalTrack()->normalizedChi2();
305  bottomGlobalMuon = gmCtr;
306  }
307  }
308  }
309  gmCtr++;
310  }
311 
312  if (bottomGlobalMuonFlag && topGlobalMuonFlag) {
313 
314  reco::Muon muonTop = splitMuons->at( topGlobalMuon );
315  reco::Muon muonBottom = splitMuons->at( bottomGlobalMuon );
316 
317  reco::TrackRef glb1 = muonTop.globalTrack();
318  reco::TrackRef glb2 = muonBottom.globalTrack();
319 
320  double ddxyValGlb = glb1->d0() - glb2->d0();
321  double ddzValGlb = glb1->dz() - glb2->dz();
322  double dphiValGlb = glb1->phi() - glb2->phi();
323  double dthetaValGlb = glb1->theta() - glb2->theta();
324  double dptValGlb = glb1->pt() - glb2->pt();
325  double dcurvValGlb = (1/glb1->pt()) - (1/glb2->pt());
326 
327  double d01ErrValGlb = glb1->d0Error();
328  double d02ErrValGlb = glb2->d0Error();
329  double dz1ErrValGlb = glb1->dzError();
330  double dz2ErrValGlb = glb2->dzError();
331  double phi1ErrValGlb = glb1->phiError();
332  double phi2ErrValGlb = glb2->phiError();
333  double theta1ErrValGlb = glb1->thetaError();
334  double theta2ErrValGlb = glb2->thetaError();
335  double pt1ErrValGlb = glb1->ptError();
336  double pt2ErrValGlb = glb2->ptError();
337 
338  ddxyAbsoluteResiduals_global_->Fill( 10000.0*ddxyValGlb/sqrt(2.0) );
339  ddxyAbsoluteResiduals_global_->Fill( 10000.0*ddzValGlb/sqrt(2.0) );
340  ddxyAbsoluteResiduals_global_->Fill( 1000.0*dphiValGlb/sqrt(2.0) );
341  ddxyAbsoluteResiduals_global_->Fill( 1000.0*dthetaValGlb/sqrt(2.0) );
342  ddxyAbsoluteResiduals_global_->Fill( dptValGlb/sqrt(2.0) );
343  ddxyAbsoluteResiduals_global_->Fill( dcurvValGlb/sqrt(2.0) );
344 
345  ddxyNormalizedResiduals_global_->Fill( ddxyValGlb/sqrt( d01ErrValGlb*d01ErrValGlb + d02ErrValGlb*d02ErrValGlb ) );
346  ddxyNormalizedResiduals_global_->Fill( ddzValGlb/sqrt( dz1ErrValGlb*dz1ErrValGlb + dz2ErrValGlb*dz2ErrValGlb ) );
347  ddxyNormalizedResiduals_global_->Fill( dphiValGlb/sqrt( phi1ErrValGlb*phi1ErrValGlb + phi2ErrValGlb*phi2ErrValGlb ) );
348  ddxyNormalizedResiduals_global_->Fill( dthetaValGlb/sqrt( theta1ErrValGlb*theta1ErrValGlb + theta2ErrValGlb*theta2ErrValGlb ) );
349  ddxyNormalizedResiduals_global_->Fill( dptValGlb/sqrt( pt1ErrValGlb*pt1ErrValGlb + pt2ErrValGlb*pt2ErrValGlb ) );
350  ddxyNormalizedResiduals_global_->Fill( dcurvValGlb/sqrt( pow(pt1ErrValGlb,2)/pow(pt1,4) + pow(pt2ErrValGlb,2)/pow(pt2,4) ) );
351 
352  }
353 
354 
355  } // end of split muons loop
356  }
357  }
358  }
359  }
360  }
361 }
type
Definition: HCALResponse.h:21
edm::ESHandle< TrackerGeometry > theGeometry
double d0Error() const
error on d0
Definition: TrackBase.h:789
double d0() const
dxy parameter in perigee convention (d0 = -dxy)
Definition: TrackBase.h:584
double normalizedChi2() const
chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
Definition: TrackBase.h:548
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:464
double theta() const
polar angle
Definition: TrackBase.h:566
MonitorElement * ddxyNormalizedResiduals_tracker_
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:632
edm::ESHandle< RPCGeometry > rpcGeometry
edm::EDGetTokenT< std::vector< reco::Muon > > splitMuonsToken_
void Fill(long long x)
MonitorElement * ddxyNormalizedResiduals_global_
T sqrt(T t)
Definition: SSEVec.h:48
double pt() const
track transverse momentum
Definition: TrackBase.h:608
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
Definition: TrackBase.h:750
double phiError() const
error on phi
Definition: TrackBase.h:777
edm::ESHandle< MagneticField > theMagField
trackingRecHit_iterator recHitsBegin() const
Iterator to first hit on the track.
Definition: Track.h:104
bool isValid() const
Definition: HandleBase.h:75
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
Definition: TrackBase.h:596
double dzError() const
error on dz
Definition: TrackBase.h:801
const T & get() const
Definition: EventSetup.h:56
MonitorElement * ddxyAbsoluteResiduals_global_
edm::ESHandle< DTGeometry > dtGeometry
edm::EDGetTokenT< std::vector< reco::Track > > splitTracksToken_
edm::ESHandle< CSCGeometry > cscGeometry
MonitorElement * ddxyAbsoluteResiduals_tracker_
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
TrackingRecHitCollection::base::const_iterator trackingRecHit_iterator
iterator over a vector of reference to TrackingRecHit in the same collection
double thetaError() const
error on theta
Definition: TrackBase.h:759
virtual TrackRef globalTrack() const
reference to Track reconstructed in both tracked and muon detector
Definition: Muon.h:54
trackingRecHit_iterator recHitsEnd() const
Iterator to last hit on the track.
Definition: Track.h:109
void TrackSplittingMonitor::beginJob ( void  )
virtual

Definition at line 148 of file TrackSplittingMonitor.cc.

References conf_, d0Cut_, dzCut_, edm::ParameterSet::getParameter(), norchiCut_, pixelHitsPerLeg_, plotMuons_, ptCut_, and totalHitsPerLeg_.

149 {
150  //get input tags
151  plotMuons_ = conf_.getParameter<bool>("ifPlotMuons");
152 
153  // cuts
154  pixelHitsPerLeg_ = conf_.getParameter<int>("pixelHitsPerLeg");
155  totalHitsPerLeg_ = conf_.getParameter<int>("totalHitsPerLeg");
156  d0Cut_ = conf_.getParameter<double>("d0Cut");
157  dzCut_ = conf_.getParameter<double>("dzCut");
158  ptCut_ = conf_.getParameter<double>("ptCut");
159  norchiCut_ = conf_.getParameter<double>("norchiCut");
160 
161 }
T getParameter(std::string const &) const
void TrackSplittingMonitor::bookHistograms ( DQMStore::IBooker ibooker,
edm::Run const &  ,
edm::EventSetup const &   
)
overridevirtual

Implements DQMEDAnalyzer.

Definition at line 47 of file TrackSplittingMonitor.cc.

References DQMStore::IBooker::book1D(), conf_, dcurvAbsoluteResiduals_global_, dcurvAbsoluteResiduals_tracker_, dcurvNormalizedResiduals_global_, dcurvNormalizedResiduals_tracker_, ddxyAbsoluteResiduals_global_, ddxyAbsoluteResiduals_tracker_, ddxyNormalizedResiduals_global_, ddxyNormalizedResiduals_tracker_, ddzAbsoluteResiduals_global_, ddzAbsoluteResiduals_tracker_, ddzNormalizedResiduals_global_, ddzNormalizedResiduals_tracker_, dphiAbsoluteResiduals_global_, dphiAbsoluteResiduals_tracker_, dphiNormalizedResiduals_global_, dphiNormalizedResiduals_tracker_, dptAbsoluteResiduals_global_, dptAbsoluteResiduals_tracker_, dptNormalizedResiduals_global_, dptNormalizedResiduals_tracker_, dthetaAbsoluteResiduals_global_, dthetaAbsoluteResiduals_tracker_, dthetaNormalizedResiduals_global_, dthetaNormalizedResiduals_tracker_, edm::ParameterSet::getParameter(), plotMuons_, MonitorElement::setAxisTitle(), DQMStore::IBooker::setCurrentFolder(), and AlCaHLTBitMon_QueryRunRegistry::string.

51 {
52 
53  std::string MEFolderName = conf_.getParameter<std::string>("FolderName");
54  ibooker.setCurrentFolder(MEFolderName);
55 
56  // bin declarations
57  int ddxyBin = conf_.getParameter<int>("ddxyBin");
58  double ddxyMin = conf_.getParameter<double>("ddxyMin");
59  double ddxyMax = conf_.getParameter<double>("ddxyMax");
60 
61  int ddzBin = conf_.getParameter<int>("ddzBin");
62  double ddzMin = conf_.getParameter<double>("ddzMin");
63  double ddzMax = conf_.getParameter<double>("ddzMax");
64 
65  int dphiBin = conf_.getParameter<int>("dphiBin");
66  double dphiMin = conf_.getParameter<double>("dphiMin");
67  double dphiMax = conf_.getParameter<double>("dphiMax");
68 
69  int dthetaBin = conf_.getParameter<int>("dthetaBin");
70  double dthetaMin = conf_.getParameter<double>("dthetaMin");
71  double dthetaMax = conf_.getParameter<double>("dthetaMax");
72 
73  int dptBin = conf_.getParameter<int>("dptBin");
74  double dptMin = conf_.getParameter<double>("dptMin");
75  double dptMax = conf_.getParameter<double>("dptMax");
76 
77  int dcurvBin = conf_.getParameter<int>("dcurvBin");
78  double dcurvMin = conf_.getParameter<double>("dcurvMin");
79  double dcurvMax = conf_.getParameter<double>("dcurvMax");
80 
81  int normBin = conf_.getParameter<int>("normBin");
82  double normMin = conf_.getParameter<double>("normMin");
83  double normMax = conf_.getParameter<double>("normMax");
84 
85  // declare histogram
86  ddxyAbsoluteResiduals_tracker_ = ibooker.book1D( "ddxyAbsoluteResiduals_tracker", "ddxyAbsoluteResiduals_tracker", ddxyBin, ddxyMin, ddxyMax );
87  ddzAbsoluteResiduals_tracker_ = ibooker.book1D( "ddzAbsoluteResiduals_tracker", "ddzAbsoluteResiduals_tracker", ddzBin, ddzMin, ddzMax );
88  dphiAbsoluteResiduals_tracker_ = ibooker.book1D( "dphiAbsoluteResiduals_tracker", "dphiAbsoluteResiduals_tracker", dphiBin, dphiMin, dphiMax );
89  dthetaAbsoluteResiduals_tracker_ = ibooker.book1D( "dthetaAbsoluteResiduals_tracker", "dthetaAbsoluteResiduals_tracker", dthetaBin, dthetaMin, dthetaMax );
90  dptAbsoluteResiduals_tracker_ = ibooker.book1D( "dptAbsoluteResiduals_tracker", "dptAbsoluteResiduals_tracker", dptBin, dptMin, dptMax );
91  dcurvAbsoluteResiduals_tracker_ = ibooker.book1D( "dcurvAbsoluteResiduals_tracker", "dcurvAbsoluteResiduals_tracker", dcurvBin, dcurvMin, dcurvMax );
92 
93  ddxyNormalizedResiduals_tracker_ = ibooker.book1D( "ddxyNormalizedResiduals_tracker", "ddxyNormalizedResiduals_tracker", normBin, normMin, normMax );
94  ddzNormalizedResiduals_tracker_ = ibooker.book1D( "ddzNormalizedResiduals_tracker", "ddzNormalizedResiduals_tracker", normBin, normMin, normMax );
95  dphiNormalizedResiduals_tracker_ = ibooker.book1D( "dphiNormalizedResiduals_tracker", "dphiNormalizedResiduals_tracker", normBin, normMin, normMax );
96  dthetaNormalizedResiduals_tracker_ = ibooker.book1D( "dthetaNormalizedResiduals_tracker", "dthetaNormalizedResiduals_tracker", normBin, normMin, normMax );
97  dptNormalizedResiduals_tracker_ = ibooker.book1D( "dptNormalizedResiduals_tracker", "dptNormalizedResiduals_tracker", normBin, normMin, normMax );
98  dcurvNormalizedResiduals_tracker_ = ibooker.book1D( "dcurvNormalizedResiduals_tracker", "dcurvNormalizedResiduals_tracker", normBin, normMin, normMax );
99 
100  if (plotMuons_){
101  ddxyAbsoluteResiduals_global_ = ibooker.book1D( "ddxyAbsoluteResiduals_global", "ddxyAbsoluteResiduals_global", ddxyBin, ddxyMin, ddxyMax );
102  ddzAbsoluteResiduals_global_ = ibooker.book1D( "ddzAbsoluteResiduals_global", "ddzAbsoluteResiduals_global", ddzBin, ddzMin, ddzMax );
103  dphiAbsoluteResiduals_global_ = ibooker.book1D( "dphiAbsoluteResiduals_global", "dphiAbsoluteResiduals_global", dphiBin, dphiMin, dphiMax );
104  dthetaAbsoluteResiduals_global_ = ibooker.book1D( "dthetaAbsoluteResiduals_global", "dthetaAbsoluteResiduals_global", dthetaBin, dthetaMin, dthetaMax );
105  dptAbsoluteResiduals_global_ = ibooker.book1D( "dptAbsoluteResiduals_global", "dptAbsoluteResiduals_global", dptBin, dptMin, dptMax );
106  dcurvAbsoluteResiduals_global_ = ibooker.book1D( "dcurvAbsoluteResiduals_global", "dcurvAbsoluteResiduals_global", dcurvBin, dcurvMin, dcurvMax );
107 
108  ddxyNormalizedResiduals_global_ = ibooker.book1D( "ddxyNormalizedResiduals_global", "ddxyNormalizedResiduals_global", normBin, normMin, normMax );
109  ddzNormalizedResiduals_global_ = ibooker.book1D( "ddzNormalizedResiduals_global", "ddzNormalizedResiduals_global", normBin, normMin, normMax );
110  dphiNormalizedResiduals_global_ = ibooker.book1D( "dphiNormalizedResiduals_global", "dphiNormalizedResiduals_global", normBin, normMin, normMax );
111  dthetaNormalizedResiduals_global_ = ibooker.book1D( "dthetaNormalizedResiduals_global", "dthetaNormalizedResiduals_global", normBin, normMin, normMax );
112  dptNormalizedResiduals_global_ = ibooker.book1D( "dptNormalizedResiduals_global", "dptNormalizedResiduals_global", normBin, normMin, normMax );
113  dcurvNormalizedResiduals_global_ = ibooker.book1D( "dcurvNormalizedResiduals_global", "dcurvNormalizedResiduals_global", normBin, normMin, normMax );
114  }
115 
116  ddxyAbsoluteResiduals_tracker_->setAxisTitle( "(#delta d_{xy})/#sqrt{2} [#mum]" );
117  ddxyAbsoluteResiduals_tracker_->setAxisTitle( "(#delta d_{z})/#sqrt{2} [#mum]" );
118  ddxyAbsoluteResiduals_tracker_->setAxisTitle( "(#delta #phi)/#sqrt{2} [mrad]" );
119  ddxyAbsoluteResiduals_tracker_->setAxisTitle( "(#delta #theta)/#sqrt{2} [mrad]" );
120  ddxyAbsoluteResiduals_tracker_->setAxisTitle( "(#delta pT)/#sqrt{2} [GeV]" );
121  ddxyAbsoluteResiduals_tracker_->setAxisTitle( "(#delta (1/pT))/#sqrt{2} [GeV^{-1}]" );
122 
123  ddxyNormalizedResiduals_tracker_->setAxisTitle( "#delta d_{xy}/#sigma(d_{xy}" );
124  ddxyNormalizedResiduals_tracker_->setAxisTitle( "#delta d_{z}/#sigma(d_{z})" );
125  ddxyNormalizedResiduals_tracker_->setAxisTitle( "#delta #phi/#sigma(d_{#phi})" );
126  ddxyNormalizedResiduals_tracker_->setAxisTitle( "#delta #theta/#sigma(d_{#theta})" );
127  ddxyNormalizedResiduals_tracker_->setAxisTitle( "#delta p_{T}/#sigma(p_{T})" );
128  ddxyNormalizedResiduals_tracker_->setAxisTitle( "#delta 1/p_{T}/#sigma(1/p_{T})" );
129 
130  if (plotMuons_){
131  ddxyAbsoluteResiduals_global_->setAxisTitle( "(#delta d_{xy})/#sqrt{2} [#mum]" );
132  ddxyAbsoluteResiduals_global_->setAxisTitle( "(#delta d_{z})/#sqrt{2} [#mum]" );
133  ddxyAbsoluteResiduals_global_->setAxisTitle( "(#delta #phi)/#sqrt{2} [mrad]" );
134  ddxyAbsoluteResiduals_global_->setAxisTitle( "(#delta #theta)/#sqrt{2} [mrad]" );
135  ddxyAbsoluteResiduals_global_->setAxisTitle( "(#delta pT)/#sqrt{2} [GeV]" );
136  ddxyAbsoluteResiduals_global_->setAxisTitle( "(#delta (1/pT))/#sqrt{2} [GeV^{-1}]" );
137 
138  ddxyNormalizedResiduals_global_->setAxisTitle( "#delta d_{xy}/#sigma(d_{xy}" );
139  ddxyNormalizedResiduals_global_->setAxisTitle( "#delta d_{z}/#sigma(d_{z})" );
140  ddxyNormalizedResiduals_global_->setAxisTitle( "#delta #phi/#sigma(d_{#phi})" );
141  ddxyNormalizedResiduals_global_->setAxisTitle( "#delta #theta/#sigma(d_{#theta})" );
142  ddxyNormalizedResiduals_global_->setAxisTitle( "#delta p_{T}/#sigma(p_{T})" );
143  ddxyNormalizedResiduals_global_->setAxisTitle( "#delta 1/p_{T}/#sigma(1/p_{T})" );
144  }
145 
146 }
T getParameter(std::string const &) const
MonitorElement * dthetaAbsoluteResiduals_global_
MonitorElement * dcurvNormalizedResiduals_global_
MonitorElement * dthetaAbsoluteResiduals_tracker_
MonitorElement * ddzNormalizedResiduals_global_
MonitorElement * ddxyNormalizedResiduals_tracker_
MonitorElement * dcurvAbsoluteResiduals_tracker_
MonitorElement * ddzAbsoluteResiduals_global_
MonitorElement * dphiNormalizedResiduals_global_
MonitorElement * dthetaNormalizedResiduals_tracker_
MonitorElement * ddxyNormalizedResiduals_global_
MonitorElement * dthetaNormalizedResiduals_global_
MonitorElement * dphiNormalizedResiduals_tracker_
MonitorElement * dcurvAbsoluteResiduals_global_
MonitorElement * dphiAbsoluteResiduals_tracker_
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
MonitorElement * ddzNormalizedResiduals_tracker_
MonitorElement * dptAbsoluteResiduals_global_
MonitorElement * dptAbsoluteResiduals_tracker_
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:274
MonitorElement * ddzAbsoluteResiduals_tracker_
MonitorElement * ddxyAbsoluteResiduals_global_
MonitorElement * dcurvNormalizedResiduals_tracker_
MonitorElement * dphiAbsoluteResiduals_global_
MonitorElement * dptNormalizedResiduals_tracker_
MonitorElement * dptNormalizedResiduals_global_
MonitorElement * ddxyAbsoluteResiduals_tracker_
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void TrackSplittingMonitor::doProfileX ( TH2 *  th2,
MonitorElement me 
)
private
void TrackSplittingMonitor::doProfileX ( MonitorElement th2m,
MonitorElement me 
)
private
void TrackSplittingMonitor::endJob ( void  )
virtual

Definition at line 364 of file TrackSplittingMonitor.cc.

References conf_, dqmStore_, edm::ParameterSet::getParameter(), dumpDBToFile_GT_ttrig_cfg::outputFileName, DQMStore::save(), DQMStore::showDirStructure(), and AlCaHLTBitMon_QueryRunRegistry::string.

364  {
365  bool outputMEsInRootFile = conf_.getParameter<bool>("OutputMEsInRootFile");
367  if(outputMEsInRootFile){
369  dqmStore_->save(outputFileName);
370  }
371 }
T getParameter(std::string const &) const
void save(const std::string &filename, const std::string &path="", const std::string &pattern="", const std::string &rewrite="", const uint32_t run=0, const uint32_t lumi=0, SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, const std::string &fileupdate="RECREATE", const bool resetMEsAfterWriting=false)
Definition: DQMStore.cc:2602
void showDirStructure(void) const
Definition: DQMStore.cc:3397

Member Data Documentation

edm::ParameterSet TrackSplittingMonitor::conf_
private

Definition at line 67 of file TrackSplittingMonitor.h.

Referenced by beginJob(), bookHistograms(), endJob(), and TrackSplittingMonitor().

edm::ESHandle<CSCGeometry> TrackSplittingMonitor::cscGeometry
private

Definition at line 72 of file TrackSplittingMonitor.h.

Referenced by analyze().

double TrackSplittingMonitor::d0Cut_
private

Definition at line 83 of file TrackSplittingMonitor.h.

Referenced by analyze(), and beginJob().

MonitorElement* TrackSplittingMonitor::dcurvAbsoluteResiduals_global_
private

Definition at line 109 of file TrackSplittingMonitor.h.

Referenced by bookHistograms().

MonitorElement* TrackSplittingMonitor::dcurvAbsoluteResiduals_tracker_
private

Definition at line 95 of file TrackSplittingMonitor.h.

Referenced by bookHistograms().

MonitorElement* TrackSplittingMonitor::dcurvNormalizedResiduals_global_
private

Definition at line 116 of file TrackSplittingMonitor.h.

Referenced by bookHistograms().

MonitorElement* TrackSplittingMonitor::dcurvNormalizedResiduals_tracker_
private

Definition at line 102 of file TrackSplittingMonitor.h.

Referenced by bookHistograms().

MonitorElement* TrackSplittingMonitor::ddxyAbsoluteResiduals_global_
private

Definition at line 104 of file TrackSplittingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackSplittingMonitor::ddxyAbsoluteResiduals_tracker_
private

Definition at line 90 of file TrackSplittingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackSplittingMonitor::ddxyNormalizedResiduals_global_
private

Definition at line 111 of file TrackSplittingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackSplittingMonitor::ddxyNormalizedResiduals_tracker_
private

Definition at line 97 of file TrackSplittingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackSplittingMonitor::ddzAbsoluteResiduals_global_
private

Definition at line 105 of file TrackSplittingMonitor.h.

Referenced by bookHistograms().

MonitorElement* TrackSplittingMonitor::ddzAbsoluteResiduals_tracker_
private

Definition at line 91 of file TrackSplittingMonitor.h.

Referenced by bookHistograms().

MonitorElement* TrackSplittingMonitor::ddzNormalizedResiduals_global_
private

Definition at line 112 of file TrackSplittingMonitor.h.

Referenced by bookHistograms().

MonitorElement* TrackSplittingMonitor::ddzNormalizedResiduals_tracker_
private

Definition at line 98 of file TrackSplittingMonitor.h.

Referenced by bookHistograms().

MonitorElement* TrackSplittingMonitor::dphiAbsoluteResiduals_global_
private

Definition at line 106 of file TrackSplittingMonitor.h.

Referenced by bookHistograms().

MonitorElement* TrackSplittingMonitor::dphiAbsoluteResiduals_tracker_
private

Definition at line 92 of file TrackSplittingMonitor.h.

Referenced by bookHistograms().

MonitorElement* TrackSplittingMonitor::dphiNormalizedResiduals_global_
private

Definition at line 113 of file TrackSplittingMonitor.h.

Referenced by bookHistograms().

MonitorElement* TrackSplittingMonitor::dphiNormalizedResiduals_tracker_
private

Definition at line 99 of file TrackSplittingMonitor.h.

Referenced by bookHistograms().

MonitorElement* TrackSplittingMonitor::dptAbsoluteResiduals_global_
private

Definition at line 108 of file TrackSplittingMonitor.h.

Referenced by bookHistograms().

MonitorElement* TrackSplittingMonitor::dptAbsoluteResiduals_tracker_
private

Definition at line 94 of file TrackSplittingMonitor.h.

Referenced by bookHistograms().

MonitorElement* TrackSplittingMonitor::dptNormalizedResiduals_global_
private

Definition at line 115 of file TrackSplittingMonitor.h.

Referenced by bookHistograms().

MonitorElement* TrackSplittingMonitor::dptNormalizedResiduals_tracker_
private

Definition at line 101 of file TrackSplittingMonitor.h.

Referenced by bookHistograms().

DQMStore* TrackSplittingMonitor::dqmStore_
private

Definition at line 66 of file TrackSplittingMonitor.h.

Referenced by endJob().

edm::ESHandle<DTGeometry> TrackSplittingMonitor::dtGeometry
private

Definition at line 71 of file TrackSplittingMonitor.h.

Referenced by analyze().

MonitorElement* TrackSplittingMonitor::dthetaAbsoluteResiduals_global_
private

Definition at line 107 of file TrackSplittingMonitor.h.

Referenced by bookHistograms().

MonitorElement* TrackSplittingMonitor::dthetaAbsoluteResiduals_tracker_
private

Definition at line 93 of file TrackSplittingMonitor.h.

Referenced by bookHistograms().

MonitorElement* TrackSplittingMonitor::dthetaNormalizedResiduals_global_
private

Definition at line 114 of file TrackSplittingMonitor.h.

Referenced by bookHistograms().

MonitorElement* TrackSplittingMonitor::dthetaNormalizedResiduals_tracker_
private

Definition at line 100 of file TrackSplittingMonitor.h.

Referenced by bookHistograms().

double TrackSplittingMonitor::dzCut_
private

Definition at line 84 of file TrackSplittingMonitor.h.

Referenced by analyze(), and beginJob().

std::string TrackSplittingMonitor::histname
private

Definition at line 64 of file TrackSplittingMonitor.h.

double TrackSplittingMonitor::norchiCut_
private

Definition at line 86 of file TrackSplittingMonitor.h.

Referenced by analyze(), and beginJob().

int TrackSplittingMonitor::pixelHitsPerLeg_
private

Definition at line 81 of file TrackSplittingMonitor.h.

Referenced by analyze(), and beginJob().

bool TrackSplittingMonitor::plotMuons_
private

Definition at line 80 of file TrackSplittingMonitor.h.

Referenced by analyze(), beginJob(), and bookHistograms().

double TrackSplittingMonitor::ptCut_
private

Definition at line 85 of file TrackSplittingMonitor.h.

Referenced by analyze(), and beginJob().

edm::ESHandle<RPCGeometry> TrackSplittingMonitor::rpcGeometry
private

Definition at line 73 of file TrackSplittingMonitor.h.

Referenced by analyze().

edm::InputTag TrackSplittingMonitor::splitMuons_
private

Definition at line 76 of file TrackSplittingMonitor.h.

Referenced by TrackSplittingMonitor().

edm::EDGetTokenT<std::vector<reco::Muon> > TrackSplittingMonitor::splitMuonsToken_
private

Definition at line 78 of file TrackSplittingMonitor.h.

Referenced by analyze(), and TrackSplittingMonitor().

edm::InputTag TrackSplittingMonitor::splitTracks_
private

Definition at line 75 of file TrackSplittingMonitor.h.

Referenced by TrackSplittingMonitor().

edm::EDGetTokenT<std::vector<reco::Track> > TrackSplittingMonitor::splitTracksToken_
private

Definition at line 77 of file TrackSplittingMonitor.h.

Referenced by analyze(), and TrackSplittingMonitor().

edm::ESHandle<TrackerGeometry> TrackSplittingMonitor::theGeometry
private

Definition at line 69 of file TrackSplittingMonitor.h.

Referenced by analyze().

edm::ESHandle<MagneticField> TrackSplittingMonitor::theMagField
private

Definition at line 70 of file TrackSplittingMonitor.h.

Referenced by analyze().

int TrackSplittingMonitor::totalHitsPerLeg_
private

Definition at line 82 of file TrackSplittingMonitor.h.

Referenced by analyze(), and beginJob().