|
|
#include <MuonTrackAnalyzer.h>
|
void | analyze (const edm::Event &event, const edm::EventSetup &eventSetup) override |
|
void | bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override |
|
| MuonTrackAnalyzer (const edm::ParameterSet &pset) |
| Constructor. More...
|
|
void | seedsAnalysis (const edm::Event &event, const edm::EventSetup &eventSetup, edm::Handle< edm::SimTrackContainer > simTracks) |
|
void | tracksAnalysis (const edm::Event &event, const edm::EventSetup &eventSetup, edm::Handle< edm::SimTrackContainer > simTracks) |
|
| ~MuonTrackAnalyzer () override |
| Destructor. More...
|
|
void | accumulate (edm::Event const &event, edm::EventSetup const &setup) final |
|
void | beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final |
|
void | beginRun (edm::Run const &run, edm::EventSetup const &setup) final |
|
void | beginStream (edm::StreamID id) final |
|
virtual void | dqmBeginRun (edm::Run const &, edm::EventSetup const &) |
|
| DQMEDAnalyzer () |
|
void | endLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final |
|
void | endRun (edm::Run const &run, edm::EventSetup const &setup) final |
|
virtual bool | getCanSaveByLumi () |
|
| EDProducer ()=default |
|
bool | hasAbilityToProduceInBeginLumis () const final |
|
bool | hasAbilityToProduceInBeginProcessBlocks () const final |
|
bool | hasAbilityToProduceInBeginRuns () const final |
|
bool | hasAbilityToProduceInEndLumis () const final |
|
bool | hasAbilityToProduceInEndProcessBlocks () const final |
|
bool | hasAbilityToProduceInEndRuns () const final |
|
|
bool | checkMuonSimHitPresence (const edm::Event &event, edm::Handle< edm::SimTrackContainer > simTracks) |
|
void | fillPlots (const edm::Event &event, edm::Handle< edm::SimTrackContainer > &simTracks) |
|
void | fillPlots (FreeTrajectoryState &recoFTS, SimTrack &simTrack, HTrack *histo, MuonPatternRecoDumper &debug) |
|
void | fillPlots (reco::TransientTrack &track, SimTrack &simTrack) |
|
void | fillPlots (TrajectoryStateOnSurface &recoTSOS, SimTrack &simState, HTrack *, MuonPatternRecoDumper &) |
|
TrajectoryStateOnSurface | getSeedTSOS (const TrajectorySeed &seed) |
|
std::pair< SimTrack, double > | getSimTrack (TrajectoryStateOnSurface &tsos, edm::Handle< edm::SimTrackContainer > simTracks) |
|
bool | isInTheAcceptance (double eta) |
|
Analyzer of the Muon tracks
- Author
- R. Bellan - INFN Torino ricca.nosp@m.rdo..nosp@m.bella.nosp@m.n@ce.nosp@m.rn.ch
Analyzer of the StandAlone muon tracks
- Author
- R. Bellan - INFN Torino ricca.nosp@m.rdo..nosp@m.bella.nosp@m.n@ce.nosp@m.rn.ch
Definition at line 51 of file MuonTrackAnalyzer.h.
◆ EtaRange
◆ MuonTrackAnalyzer()
◆ ~MuonTrackAnalyzer()
MuonTrackAnalyzer::~MuonTrackAnalyzer |
( |
| ) |
|
|
override |
◆ analyze()
◆ bookHistograms()
Implements DQMEDAnalyzer.
Definition at line 91 of file MuonTrackAnalyzer.cc.
98 if (!
algo.process().empty())
100 if (!
algo.label().empty())
102 if (!
algo.instance().empty())
112 simName +=
"/SimTracks";
140 hChi2 = ibooker.
book1D(
"chi2",
"#chi^2", 200, 0, 200);
141 hChi2VsEta = ibooker.
book2D(
"chi2VsEta",
"#chi^2 VS #eta", 120, -3., 3., 200, 0, 200);
143 hChi2Norm = ibooker.
book1D(
"chi2Norm",
"Normalized #chi^2", 400, 0, 100);
144 hChi2NormVsEta = ibooker.
book2D(
"chi2NormVsEta",
"Normalized #chi^2 VS #eta", 120, -3., 3., 400, 0, 100);
148 ibooker.
book2D(
"HitsPerTrackVsEta",
"Number of hits per track VS #eta", 120, -3., 3., 55, 0, 55);
150 hDof = ibooker.
book1D(
"dof",
"Number of Degree of Freedom", 55, 0, 55);
151 hDofVsEta = ibooker.
book2D(
"dofVsEta",
"Number of Degree of Freedom VS #eta", 120, -3., 3., 55, 0, 55);
153 hChi2Prob = ibooker.
book1D(
"chi2Prob",
"#chi^2 probability", 200, 0, 1);
154 hChi2ProbVsEta = ibooker.
book2D(
"chi2ProbVsEta",
"#chi^2 probability VS #eta", 120, -3., 3., 200, 0, 1);
156 hNumberOfTracks = ibooker.
book1D(
"NumberOfTracks",
"Number of reconstructed tracks per event", 200, 0, 200);
158 "NumberOfTracksVsEta",
"Number of reconstructed tracks per event VS #eta", 120, -3., 3., 10, 0, 10);
160 hChargeVsEta = ibooker.
book2D(
"ChargeVsEta",
"Charge vs #eta gen", 120, -3., 3., 4, -2., 2.);
161 hChargeVsPt = ibooker.
book2D(
"ChargeVsPt",
"Charge vs P_{T} gen", 250, 0, 200, 4, -2., 2.);
162 hPtRecVsPtGen = ibooker.
book2D(
"PtRecVsPtGen",
"P_{T} rec vs P_{T} gen", 250, 0, 200, 250, 0, 200);
164 hDeltaPtVsEta = ibooker.
book2D(
"DeltaPtVsEta",
"#Delta P_{t} vs #eta gen", 120, -3., 3., 500, -250., 250.);
166 ibooker.
book2D(
"DeltaPt_In_Out_VsEta_",
"P^{in}_{t} - P^{out}_{t} vs #eta gen", 120, -3., 3., 500, -250., 250.);
References dqm::implementation::IBooker::book1D(), dqm::implementation::IBooker::book2D(), dqm::implementation::NavigatorBase::cd(), TrackerOfflineValidation_Dqm_cff::dirName, python.rootplot.root2matplotlib::replace(), dqm::implementation::NavigatorBase::setCurrentFolder(), and AlCaHLTBitMon_QueryRunRegistry::string.
◆ checkMuonSimHitPresence()
Definition at line 394 of file MuonTrackAnalyzer.cc.
405 map<unsigned int, vector<const PSimHit *> > mapOfMuonSimHits;
407 for (PSimHitContainer::const_iterator simhit = dtSimHits->begin(); simhit != dtSimHits->end(); ++simhit) {
408 if (
abs(simhit->particleType()) != 13)
410 mapOfMuonSimHits[simhit->trackId()].push_back(&*simhit);
413 for (PSimHitContainer::const_iterator simhit = cscSimHits->begin(); simhit != cscSimHits->end(); ++simhit) {
414 if (
abs(simhit->particleType()) != 13)
416 mapOfMuonSimHits[simhit->trackId()].push_back(&*simhit);
419 for (PSimHitContainer::const_iterator simhit = rpcSimHits->begin(); simhit != rpcSimHits->end(); ++simhit) {
420 if (
abs(simhit->particleType()) != 13)
422 mapOfMuonSimHits[simhit->trackId()].push_back(&*simhit);
425 bool presence =
false;
431 map<unsigned int, vector<const PSimHit *> >::const_iterator mapIterator =
432 mapOfMuonSimHits.find(
simTrack->trackId());
434 if (mapIterator != mapOfMuonSimHits.end())
References funct::abs(), cscDigiValidation_cfi::simTrack, and TrackCandidateProducer_cfi::simTracks.
◆ fillPlots() [1/4]
◆ fillPlots() [2/4]
Definition at line 324 of file MuonTrackAnalyzer.cc.
328 LogTrace(
"MuonTrackAnalyzer") <<
debug.dumpFTS(recoFTS) << endl;
329 histo->Fill(recoFTS);
334 histo->FillDeltaR(deltaRVal);
References debug, timingPdfMaker::histo, LogTrace, FreeTrajectoryState::momentum(), dt_dqm_sourceclient_common_cff::reco, cscDigiValidation_cfi::simTrack, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
◆ fillPlots() [3/4]
◆ fillPlots() [4/4]
Definition at line 309 of file MuonTrackAnalyzer.cc.
313 LogTrace(
"MuonTrackAnalyzer") <<
debug.dumpTSOS(recoTSOS) << endl;
314 histo->Fill(recoTSOS);
319 histo->FillDeltaR(deltaRVal);
References debug, TrajectoryStateOnSurface::globalMomentum(), timingPdfMaker::histo, LogTrace, dt_dqm_sourceclient_common_cff::reco, cscDigiValidation_cfi::simTrack, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
◆ getSeedTSOS()
◆ getSimTrack()
Definition at line 339 of file MuonTrackAnalyzer.cc.
356 SimTrackContainer::const_iterator
simTrack;
360 double bestDeltaR = 10
e5;
362 if (
abs((*simTrack).type()) != 13)
368 double newDeltaR = deltaR<double>(vect.eta(), vect.phi(),
simTrack->momentum().eta(),
simTrack->momentum().phi());
370 if (newDeltaR < bestDeltaR) {
371 LogTrace(
"MuonTrackAnalyzer") <<
"Matching Track with DeltaR = " << newDeltaR << endl;
372 bestDeltaR = newDeltaR;
376 return pair<SimTrack, double>(
result, bestDeltaR);
References funct::abs(), TrackValidation_cff::e5, TrajectoryStateOnSurface::globalMomentum(), LogTrace, mps_fire::result, cscDigiValidation_cfi::simTrack, TrackCandidateProducer_cfi::simTracks, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
◆ isInTheAcceptance()
bool MuonTrackAnalyzer::isInTheAcceptance |
( |
double |
eta | ) |
|
|
private |
◆ seedsAnalysis()
◆ tracksAnalysis()
Definition at line 211 of file MuonTrackAnalyzer.cc.
220 LogTrace(
"MuonTrackAnalyzer") <<
"Reconstructed tracks: " <<
tracks->size() << endl;
227 for (reco::TrackCollection::const_iterator
t =
tracks->begin();
t !=
tracks->end(); ++
t) {
239 LogTrace(
"MuonTrackAnalyzer") <<
"State at the outer surface: " << endl;
242 LogTrace(
"MuonTrackAnalyzer") <<
"State at the inner surface: " << endl;
245 LogTrace(
"MuonTrackAnalyzer") <<
"State at PCA: " << endl;
248 double deltaPt_in_out = innerTSOS.
globalMomentum().
perp() - outerTSOS.globalMomentum().perp();
260 LogTrace(
"MuonTrackAnalyzer") <<
"--------------------------------------------" << endl;
References TrajectoryStateOnSurface::charge(), debug, TrajectoryStateOnSurface::globalMomentum(), LogTrace, PV3DBase< T, PVType, FrameType >::perp(), cscDigiValidation_cfi::simTrack, TrackCandidateProducer_cfi::simTracks, mathSSE::sqrt(), submitPVValidationJobs::t, HLT_FULL_cff::track, and tracks.
◆ dbe_
◆ dirName_
std::string MuonTrackAnalyzer::dirName_ |
|
private |
◆ doSeedsAnalysis
bool MuonTrackAnalyzer::doSeedsAnalysis |
|
private |
◆ doTracksAnalysis
bool MuonTrackAnalyzer::doTracksAnalysis |
|
private |
◆ hChargeVsEta
◆ hChargeVsPt
◆ hChi2
◆ hChi2Norm
◆ hChi2NormVsEta
◆ hChi2Prob
◆ hChi2ProbVsEta
◆ hChi2VsEta
◆ hDeltaPt_In_Out_VsEta
◆ hDeltaPtVsEta
◆ hDof
◆ hDofVsEta
◆ hHitsPerTrack
◆ hHitsPerTrackVsEta
◆ hNumberOfTracks
◆ hNumberOfTracksVsEta
◆ hPtRecVsPtGen
◆ hRecoSeedInner
HTrack* MuonTrackAnalyzer::hRecoSeedInner |
|
private |
◆ hRecoSeedPCA
HTrack* MuonTrackAnalyzer::hRecoSeedPCA |
|
private |
◆ hRecoTracksInner
HTrack* MuonTrackAnalyzer::hRecoTracksInner |
|
private |
◆ hRecoTracksOuter
HTrack* MuonTrackAnalyzer::hRecoTracksOuter |
|
private |
◆ hRecoTracksPCA
HTrack* MuonTrackAnalyzer::hRecoTracksPCA |
|
private |
◆ hSimTracks
◆ numberOfRecTracks
int MuonTrackAnalyzer::numberOfRecTracks |
|
private |
◆ numberOfSimTracks
int MuonTrackAnalyzer::numberOfSimTracks |
|
private |
◆ out
std::string MuonTrackAnalyzer::out |
|
private |
◆ pset
◆ subsystemname_
std::string MuonTrackAnalyzer::subsystemname_ |
|
private |
◆ theCSCSimHitLabel
◆ theCSCSimHitToken
◆ theDTSimHitLabel
◆ theDTSimHitToken
◆ theEtaRange
◆ theRPCSimHitLabel
◆ theRPCSimHitToken
◆ theSeedPropagatorName
std::string MuonTrackAnalyzer::theSeedPropagatorName |
|
private |
◆ theSeedsLabel
◆ theSeedsToken
◆ theService
◆ theSimTracksLabel
◆ theSimTracksToken
◆ theTracksLabel
◆ theTracksToken
◆ theUpdator
MonitorElement * hNumberOfTracksVsEta
GlobalVector momentum() const
edm::EDGetTokenT< TrajectorySeedCollection > theSeedsToken
HTrack * hRecoTracksOuter
float ChiSquaredProbability(double chiSquared, double nrDOF)
MonitorElement * hDeltaPtVsEta
MonitorElement * hChi2ProbVsEta
MonitorElement * hChi2Norm
std::string theSeedPropagatorName
bool checkMuonSimHitPresence(const edm::Event &event, edm::Handle< edm::SimTrackContainer > simTracks)
std::pair< bool, FreeTrajectoryState > propagateToNominalLine(const TrajectoryStateOnSurface &tsos) const
Propagate the state to the 2D-PCA (nominal CMS axis)
virtual void setCurrentFolder(std::string const &fullpath)
TrackCharge charge() const
HTrack * hRecoTracksInner
TrajectoryStateOnSurface getSeedTSOS(const TrajectorySeed &seed)
edm::EDGetTokenT< std::vector< PSimHit > > theCSCSimHitToken
edm::EDGetTokenT< std::vector< PSimHit > > theDTSimHitToken
edm::InputTag theCSCSimHitLabel
T getUntrackedParameter(std::string const &, T const &) const
void seedsAnalysis(const edm::Event &event, const edm::EventSetup &eventSetup, edm::Handle< edm::SimTrackContainer > simTracks)
std::pair< SimTrack, double > getSimTrack(TrajectoryStateOnSurface &tsos, edm::Handle< edm::SimTrackContainer > simTracks)
MonitorElement * hPtRecVsPtGen
edm::EDGetTokenT< edm::SimTrackContainer > theSimTracksToken
void Fill(double p, double pt, double eta, double phi, double charge)
edm::InputTag theDTSimHitLabel
std::string subsystemname_
unsigned int detId() const
FreeTrajectoryState const * freeState(bool withErrors=true) const
MonitorElement * hDofVsEta
edm::InputTag theSeedsLabel
HTrackVariables * hSimTracks
MonitorElement * hChargeVsEta
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > XYZVectorD
spatial vector with cartesian internal representation
edm::EDGetTokenT< std::vector< PSimHit > > theRPCSimHitToken
bool isInTheAcceptance(double eta)
edm::EDGetTokenT< reco::TrackCollection > theTracksToken
MonitorElement * hHitsPerTrackVsEta
const uint32_t *__restrict__ const HitContainer *__restrict__ TkSoA *__restrict__ tracks
MonitorElement * hHitsPerTrack
MuonUpdatorAtVertex * theUpdator
MonitorElement * hNumberOfTracks
MonitorElement * hChargeVsPt
GlobalVector globalMomentum() const
edm::InputTag theSimTracksLabel
edm::InputTag theRPCSimHitLabel
MonitorElement * hChi2Prob
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
MonitorElement * hChi2NormVsEta
virtual const BoundSurface & surface() const =0
The surface of the GeometricSearchDet.
T getParameter(std::string const &) const
Abs< T >::type abs(const T &t)
MonitorElement * hDeltaPt_In_Out_VsEta
edm::InputTag theTracksLabel
void tracksAnalysis(const edm::Event &event, const edm::EventSetup &eventSetup, edm::Handle< edm::SimTrackContainer > simTracks)
MonitorElement * hChi2VsEta
MuonServiceProxy * theService
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
def replace(string, replacements)
void fillPlots(const edm::Event &event, edm::Handle< edm::SimTrackContainer > &simTracks)