CMS 3D CMS Logo

List of all members | Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes
MuonTrackResidualAnalyzer Class Reference

#include <MuonTrackResidualAnalyzer.h>

Inheritance diagram for MuonTrackResidualAnalyzer:
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

Classes

struct  RadiusComparatorInOut
 

Public Types

enum  EtaRange { all, barrel, endcap }
 
- 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
 

Public Member Functions

void analyze (const edm::Event &event, const edm::EventSetup &eventSetup) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
void dqmEndRun (edm::Run const &, edm::EventSetup const &) override
 
 MuonTrackResidualAnalyzer (const edm::ParameterSet &ps)
 Constructor. More...
 
 ~MuonTrackResidualAnalyzer () override
 Destructor. More...
 
- 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 &)
 
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)
 

Private Member Functions

void computeResolution (Trajectory &trajectory, std::map< DetId, const PSimHit * > &hitIdMap, HResolution1DRecHit *histos)
 
bool isInTheAcceptance (double eta)
 
std::map< DetId, const PSimHit * > mapMuSimHitsPerId (edm::Handle< edm::PSimHitContainer > dtSimhits, edm::Handle< edm::PSimHitContainer > cscSimhits, edm::Handle< edm::PSimHitContainer > rpcSimhits)
 
void mapMuSimHitsPerId (edm::Handle< edm::PSimHitContainer > simhits, std::map< DetId, const PSimHit * > &hitIdMap)
 

Private Attributes

edm::InputTag cscSimHitLabel
 
DQMStoredbe_
 
std::string dirName_
 
edm::InputTag dtSimHitLabel
 
HResolution1DRecHith1DRecHitRes
 
HResolution1DRecHith1DSimHitRes
 
MonitorElementhDeltaPtVsEtaSim
 
MonitorElementhDeltaPtVsEtaSim2
 
MonitorElementhDPtRef
 
MonitorElementhSimHitsPerTrack
 
MonitorElementhSimHitsPerTrackVsEta
 
std::string out
 
edm::ParameterSet pset
 
edm::InputTag rpcSimHitLabel
 
std::string subsystemname_
 
edm::EDGetTokenT< std::vector< PSimHit > > theCSCSimHitToken
 
edm::InputTag theDataType
 
edm::EDGetTokenT< edm::SimTrackContainertheDataTypeToken
 
edm::EDGetTokenT< std::vector< PSimHit > > theDTSimHitToken
 
MeasurementEstimatortheEstimator
 
EtaRange theEtaRange
 
int theMuonSimHitNumberPerEvent
 
edm::InputTag theMuonTrackLabel
 
edm::EDGetTokenT< reco::TrackCollectiontheMuonTrackToken
 
edm::EDGetTokenT< std::vector< PSimHit > > theRPCSimHitToken
 
MuonServiceProxytheService
 
std::vector< const PSimHit * > theSimHitContainer
 
unsigned int theSimTkId
 
KFUpdatortheUpdator
 

Additional Inherited Members

- 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

No description available.

Author
R. Bellan - INFN Torino ricca.nosp@m.rdo..nosp@m.bella.nosp@m.n@ce.nosp@m.rn.ch

Definition at line 44 of file MuonTrackResidualAnalyzer.h.

Member Enumeration Documentation

Constructor & Destructor Documentation

MuonTrackResidualAnalyzer::MuonTrackResidualAnalyzer ( const edm::ParameterSet ps)

Constructor.

Definition at line 37 of file MuonTrackResidualAnalyzer.cc.

References Chi2MeasurementEstimator_cfi::Chi2MeasurementEstimator, dbe_, MuonAnalyzers_cfi::EtaRange, LogDebug, MuonServiceProxy_cff::MuonServiceProxy, Utilities::operator, MillePedeFileConverter_cfg::out, muonDTDigis_cfi::pset, and AlCaHLTBitMon_QueryRunRegistry::string.

37  {
38  pset = ps;
39  // service parameters
40  ParameterSet serviceParameters = pset.getParameter<ParameterSet>("ServiceParameters");
41  // the services
42  theService = new MuonServiceProxy(serviceParameters);
43 
45  theMuonTrackToken = consumes<reco::TrackCollection>(theMuonTrackLabel);
46 
47  cscSimHitLabel = pset.getParameter<InputTag>("CSCSimHit");
48  dtSimHitLabel = pset.getParameter<InputTag>("DTSimHit");
49  rpcSimHitLabel = pset.getParameter<InputTag>("RPCSimHit");
50  theCSCSimHitToken = consumes<std::vector<PSimHit> >(cscSimHitLabel);
51  theDTSimHitToken = consumes<std::vector<PSimHit> >(dtSimHitLabel);
52  theRPCSimHitToken = consumes<std::vector<PSimHit> >(rpcSimHitLabel);
53 
55  out = pset.getUntrackedParameter<string>("rootFileName");
57  subsystemname_ = pset.getUntrackedParameter<std::string>("subSystemFolder", "YourSubsystem");
58 
59  // Sim or Real
60  theDataType = pset.getParameter<InputTag>("DataType");
61  if (theDataType.label() != "RealData" && theDataType.label() != "SimData")
62  LogDebug("MuonTrackResidualAnalyzer") << "Error in Data Type!!";
63  theDataTypeToken = consumes<edm::SimTrackContainer>(theDataType);
64 
65  theEtaRange = (EtaRange)pset.getParameter<int>("EtaRange");
66 
67  theUpdator = new KFUpdator();
69 
71 }
#define LogDebug(id)
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
MeasurementEstimator * theEstimator
edm::EDGetTokenT< reco::TrackCollection > theMuonTrackToken
edm::EDGetTokenT< std::vector< PSimHit > > theRPCSimHitToken
std::string const & label() const
Definition: InputTag.h:36
edm::EDGetTokenT< edm::SimTrackContainer > theDataTypeToken
edm::EDGetTokenT< std::vector< PSimHit > > theCSCSimHitToken
edm::EDGetTokenT< std::vector< PSimHit > > theDTSimHitToken
MuonTrackResidualAnalyzer::~MuonTrackResidualAnalyzer ( )
override

Destructor.

Definition at line 74 of file MuonTrackResidualAnalyzer.cc.

74  {
75  delete theUpdator;
76  delete theEstimator;
77  delete theService;
78 }
MeasurementEstimator * theEstimator

Member Function Documentation

void MuonTrackResidualAnalyzer::analyze ( const edm::Event event,
const edm::EventSetup eventSetup 
)
override

Definition at line 123 of file MuonTrackResidualAnalyzer.cc.

References funct::abs(), debug, LogDebug, LogTrace, mag(), mps_fire::result, muonSimHitMatcherPSet::simTrack, TrackCandidateProducer_cfi::simTracks, GeomDet::toGlobal(), and HLT_2018_cff::track.

123  {
124  LogDebug("MuonTrackResidualAnalyzer") << "Analyze";
125 
126  // Update the services
127  theService->update(eventSetup);
130 
131  // Get the SimHit collection from the event
132  Handle<PSimHitContainer> dtSimHits;
133  event.getByToken(theDTSimHitToken, dtSimHits);
134 
135  Handle<PSimHitContainer> cscSimHits;
136  event.getByToken(theCSCSimHitToken, cscSimHits);
137 
138  Handle<PSimHitContainer> rpcSimHits;
139  event.getByToken(theRPCSimHitToken, rpcSimHits);
140 
142 
143  // FIXME Add the tracker one??
144 
145  // Map simhits per DetId
146  map<DetId, const PSimHit *> muonSimHitsPerId = mapMuSimHitsPerId(dtSimHits, cscSimHits, rpcSimHits);
147 
149 
150  double etaSim = 0;
151 
152  if (theDataType.label() == "SimData") {
153  // Get the SimTrack collection from the event
154  event.getByToken(theDataTypeToken, simTracks);
155 
156  // Loop over the Sim tracks
157  SimTrackContainer::const_iterator simTrack;
158 
159  for (simTrack = simTracks->begin(); simTrack != simTracks->end(); ++simTrack)
160  if (abs((*simTrack).type()) == 13) {
161  hSimHitsPerTrackVsEta->Fill((*simTrack).momentum().eta(), theMuonSimHitNumberPerEvent);
162  etaSim = (*simTrack).momentum().eta();
163  theSimTkId = (*simTrack).trackId();
164  }
165  }
166 
167  // Get the RecTrack collection from the event
169  event.getByToken(theMuonTrackToken, muonTracks);
170 
171  reco::TrackCollection::const_iterator muonTrack;
172 
173  // Loop over the Rec tracks
174  for (muonTrack = muonTracks->begin(); muonTrack != muonTracks->end(); ++muonTrack) {
175  reco::TransientTrack track(*muonTrack, &*theService->magneticField(), theService->trackingGeometry());
176 
177  TrajectoryStateOnSurface outerTSOS = track.outermostMeasurementState();
178  TrajectoryStateOnSurface innerTSOS = track.innermostMeasurementState();
179 
181 
182  // SimHit Energy loss analysis
183  double momAtEntry = -150., momAtExit = -150.;
184 
185  if (theSimHitContainer.size() > 1) {
186  const GeomDet *geomDetA = theService->trackingGeometry()->idToDet(DetId(theSimHitContainer.front()->detUnitId()));
187  double distA = geomDetA->toGlobal(theSimHitContainer.front()->localPosition()).mag();
188 
189  const GeomDet *geomDetB = theService->trackingGeometry()->idToDet(DetId(theSimHitContainer.back()->detUnitId()));
190  double distB = geomDetB->toGlobal(theSimHitContainer.back()->localPosition()).mag();
191 
192  LogTrace("MuonTrackResidualAnalyzer")
193  << "Inner SimHit: " << theSimHitContainer.front()->particleType()
194  << " Pt: " << theSimHitContainer.front()->momentumAtEntry().perp()
195  << " E: " << theSimHitContainer.front()->momentumAtEntry().perp() << " R: " << distA << endl;
196  LogTrace("MuonTrackResidualAnalyzer")
197  << "Outer SimHit: " << theSimHitContainer.back()->particleType()
198  << " Pt: " << theSimHitContainer.back()->momentumAtEntry().perp()
199  << " E: " << theSimHitContainer.front()->momentumAtEntry().perp() << " R: " << distB << endl;
200 
201  momAtEntry = theSimHitContainer.front()->momentumAtEntry().perp();
202  momAtExit = theSimHitContainer.back()->momentumAtEntry().perp();
203  }
204 
205  trackingRecHit_iterator rhFirst = track.recHitsBegin();
206  trackingRecHit_iterator rhLast = track.recHitsEnd() - 1;
207  map<DetId, const PSimHit *>::const_iterator itFirst = muonSimHitsPerId.find((*rhFirst)->geographicalId());
208  map<DetId, const PSimHit *>::const_iterator itLast = muonSimHitsPerId.find((*rhLast)->geographicalId());
209 
210  double momAtEntry2 = -150, momAtExit2 = -150.;
211  if (itFirst != muonSimHitsPerId.end())
212  momAtEntry2 = itFirst->second->momentumAtEntry().perp();
213  else {
214  LogDebug("MuonTrackResidualAnalyzer") << "No first sim hit found";
215  ++rhFirst;
216  itFirst = muonSimHitsPerId.find((*rhFirst)->geographicalId());
217  if (itFirst != muonSimHitsPerId.end())
218  momAtEntry2 = itFirst->second->momentumAtEntry().perp();
219  else {
220  LogDebug("MuonTrackResidualAnalyzer") << "No second sim hit found";
221  // continue;
222  }
223  }
224 
225  if (itLast != muonSimHitsPerId.end())
226  momAtExit2 = itLast->second->momentumAtEntry().perp();
227  else {
228  LogDebug("MuonTrackResidualAnalyzer") << "No last sim hit found";
229  --rhLast;
230  itLast = muonSimHitsPerId.find((*rhLast)->geographicalId());
231  if (itLast != muonSimHitsPerId.end())
232  momAtExit2 = itLast->second->momentumAtEntry().perp();
233  else {
234  LogDebug("MuonTrackResidualAnalyzer") << "No last but one sim hit found";
235  // continue;
236  }
237  }
238 
239  if (etaSim) {
240  if (momAtEntry >= 0 && momAtExit >= 0)
241  hDeltaPtVsEtaSim->Fill(etaSim, momAtEntry - momAtExit);
242  if (momAtEntry2 >= 0 && momAtExit2 >= 0)
243  hDeltaPtVsEtaSim2->Fill(etaSim, momAtEntry2 - momAtExit2);
244  } else
245  LogDebug("MuonTrackResidualAnalyzer") << "NO SimTrack'eta";
246  //
247 
248  // computeResolution(trajectoryBW,muonSimHitsPerId,h1DSimHitRes);
249  // computeResolution(smoothed,muonSimHitsPerId,h1DSimHitRes);
250  }
251 }
#define LogDebug(id)
std::map< DetId, const PSimHit * > mapMuSimHitsPerId(edm::Handle< edm::PSimHitContainer > dtSimhits, edm::Handle< edm::PSimHitContainer > cscSimhits, edm::Handle< edm::PSimHitContainer > rpcSimhits)
std::vector< const PSimHit * > theSimHitContainer
edm::EDGetTokenT< reco::TrackCollection > theMuonTrackToken
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
Definition: GeomDet.h:49
void Fill(long long x)
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
#define LogTrace(id)
std::vector< ConstRecHitPointer > ConstRecHitContainer
Definition: DetId.h:17
#define debug
Definition: HDRShower.cc:19
edm::EDGetTokenT< std::vector< PSimHit > > theRPCSimHitToken
std::string const & label() const
Definition: InputTag.h:36
edm::EDGetTokenT< edm::SimTrackContainer > theDataTypeToken
edm::EDGetTokenT< std::vector< PSimHit > > theCSCSimHitToken
edm::EDGetTokenT< std::vector< PSimHit > > theDTSimHitToken
void MuonTrackResidualAnalyzer::bookHistograms ( DQMStore::IBooker ibooker,
edm::Run const &  iRun,
edm::EventSetup const &   
)
overridevirtual

Implements DQMEDAnalyzer.

Definition at line 80 of file MuonTrackResidualAnalyzer.cc.

References ecalcalib_dqm_sourceclient-live_cfg::algo, dqm::dqmstoreimpl::DQMStore::IBooker::book1D(), dqm::dqmstoreimpl::DQMStore::IBooker::book2D(), dqm::dqmstoreimpl::DQMStore::IBooker::cd(), TrackerOfflineValidation_Dqm_cff::dirName, edm::InputTag::instance(), edm::InputTag::label(), LogDebug, edm::InputTag::process(), python.rootplot.root2matplotlib::replace(), and dqm::dqmstoreimpl::DQMStore::IBooker::setCurrentFolder().

82  {
83  LogDebug("MuonTrackResidualAnalyzer") << "Begin Run";
84 
85  //ibooker.showDirStructure();
86 
87  ibooker.cd();
89  string dirName = dirName_;
90  if (!algo.process().empty())
91  dirName += algo.process() + "_";
92  if (!algo.label().empty())
93  dirName += algo.label() + "_";
94  if (!algo.instance().empty())
95  dirName += algo.instance() + "";
96  if (dirName.find("Tracks") < dirName.length()) {
97  dirName.replace(dirName.find("Tracks"), 6, "");
98  }
99  std::replace(dirName.begin(), dirName.end(), ':', '_');
100  ibooker.setCurrentFolder(dirName);
101 
102  hDPtRef = ibooker.book1D("DeltaPtRef", "P^{in}_{t}-P^{in ref}", 10000, -20, 20);
103 
104  // Resolution wrt the 1D Rec Hits
105  // h1DRecHitRes = new HResolution1DRecHit("TotalRec");
106 
107  // Resolution wrt the 1d Sim Hits
108  // h1DSimHitRes = new HResolution1DRecHit("TotalSim");
109 
110  hSimHitsPerTrack = ibooker.book1D("SimHitsPerTrack", "Number of sim hits per track", 55, 0, 55);
112  ibooker.book2D("SimHitsPerTrackVsEta", "Number of sim hits per track VS #eta", 120, -3., 3., 55, 0, 55);
114  ibooker.book2D("DeltaPtVsEtaSim", "#Delta P_{t} vs #eta gen, sim quantity", 120, -3., 3., 500, -250., 250.);
116  ibooker.book2D("DeltaPtVsEtaSim2", "#Delta P_{t} vs #eta gen, sim quantity", 120, -3., 3., 500, -250., 250.);
117 }
#define LogDebug(id)
def replace(string, replacements)
std::string const & label() const
Definition: InputTag.h:36
std::string const & process() const
Definition: InputTag.h:40
std::string const & instance() const
Definition: InputTag.h:37
void MuonTrackResidualAnalyzer::computeResolution ( Trajectory trajectory,
std::map< DetId, const PSimHit * > &  hitIdMap,
HResolution1DRecHit histos 
)
private

Definition at line 321 of file MuonTrackResidualAnalyzer.cc.

References funct::abs(), gather_cfg::cout, data, PSimHit::detUnitId(), change_name::diff, fftjetvertexadder_cfi::errX, fftjetvertexadder_cfi::errY, fftjetvertexadder_cfi::errZ, PV3DBase< T, PVType, FrameType >::eta(), HResolution1DRecHit::Fill(), PSimHit::localPosition(), Trajectory::measurements(), PSimHit::momentumAtEntry(), PV3DBase< T, PVType, FrameType >::phi(), Geom::Phi< T1, Range >::phi(), GeomDet::toLocal(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

323  {
325 
326  for (Trajectory::DataContainer::const_iterator datum = data.begin(); datum != data.end(); ++datum) {
327  GlobalPoint fitPoint = datum->updatedState().globalPosition();
328 
329  // FIXME!
330  // double errX = datum->updatedState().cartesianError().matrix()[0][0];
331  // double errY = datum->updatedState().cartesianError().matrix()[1][1];
332  // double errZ = datum->updatedState().cartesianError().matrix()[2][2];
333  //
334  double errX = datum->updatedState().localError().matrix()(3, 3);
335  double errY = datum->updatedState().localError().matrix()(4, 4);
336  double errZ = 1.;
337 
338  map<DetId, const PSimHit *>::const_iterator it = hitIdMap.find(datum->recHit()->geographicalId());
339 
340  if (it == hitIdMap.end())
341  continue; // FIXME! Put a counter
342 
343  const PSimHit *simhit = it->second;
344 
345  LocalPoint simHitPoint = simhit->localPosition();
346 
347  const GeomDet *geomDet = theService->trackingGeometry()->idToDet(DetId(simhit->detUnitId()));
348 
349  LocalPoint fitLocalPoint = geomDet->toLocal(fitPoint);
350 
351  LocalVector diff = fitLocalPoint - simHitPoint;
352 
353  cout << "SimHit position " << simHitPoint << endl;
354  cout << "Fit position " << fitLocalPoint << endl;
355  cout << "Fit position2 " << datum->updatedState().localPosition() << endl;
356  cout << "Errors on the fit position: (" << errX << "," << errY << "," << errZ << ")" << endl;
357  cout << "Resolution on x: " << diff.x() / abs(simHitPoint.x()) << endl;
358  cout << "Resolution on y: " << diff.y() / abs(simHitPoint.y()) << endl;
359  cout << "Resolution on z: " << diff.z() / abs(simHitPoint.z()) << endl;
360 
361  cout << "Eta direction: " << simhit->momentumAtEntry().eta() << " eta position: " << simHitPoint.eta() << endl;
362  cout << "Phi direction: " << simhit->momentumAtEntry().phi() << " phi position: " << simHitPoint.phi() << endl;
363 
364  histos->Fill(simHitPoint.x(),
365  simHitPoint.y(),
366  simHitPoint.z(),
367  diff.x(),
368  diff.y(),
369  diff.z(),
370  errX,
371  errY,
372  errZ,
373  simhit->momentumAtEntry().eta(),
374  simhit->momentumAtEntry().phi());
375  // simHitPoint.eta(), simHitPoint.phi() ); // FIXME!
376  }
377 }
LocalVector momentumAtEntry() const
The momentum of the track that produced the hit, at entry point.
Definition: PSimHit.h:55
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
T y() const
Definition: PV3DBase.h:60
LocalPoint toLocal(const GlobalPoint &gp) const
Conversion to the R.F. of the GeomDet.
Definition: GeomDet.h:58
T1 phi() const
Definition: Phi.h:78
DataContainer const & measurements() const
Definition: Trajectory.h:178
std::vector< TrajectoryMeasurement > DataContainer
Definition: Trajectory.h:40
Local3DPoint localPosition() const
Definition: PSimHit.h:52
T z() const
Definition: PV3DBase.h:61
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
Definition: DetId.h:17
T eta() const
Definition: PV3DBase.h:73
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
void Fill(double x, double y, double z, double dx, double dy, double dz, double errx, double erry, double errz, double eta, double phi)
Definition: Histograms.h:338
T x() const
Definition: PV3DBase.h:59
unsigned int detUnitId() const
Definition: PSimHit.h:97
void MuonTrackResidualAnalyzer::dqmEndRun ( edm::Run const &  ,
edm::EventSetup const &   
)
overridevirtual

Reimplemented from DQMEDAnalyzer.

Definition at line 119 of file MuonTrackResidualAnalyzer.cc.

References dbe_, MillePedeFileConverter_cfg::out, and dqm::dqmstoreimpl::DQMStore::save().

119  {
120  if (!out.empty() && dbe_)
121  dbe_->save(out);
122 }
void save(std::string const &filename, std::string const &path="", std::string const &pattern="", std::string const &rewrite="", uint32_t run=0, uint32_t lumi=0, SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, std::string const &fileupdate="RECREATE")
Definition: DQMStore.cc:2244
bool MuonTrackResidualAnalyzer::isInTheAcceptance ( double  eta)
private

Definition at line 253 of file MuonTrackResidualAnalyzer.cc.

References funct::abs(), Vispa.Plugins.EdmBrowser.EdmDataAccessor::all(), Reference_intrackfit_cff::barrel, makeMuonMisalignmentScenario::endcap, and LogDebug.

253  {
254  switch (theEtaRange) {
255  case all:
256  return (abs(eta) <= 2.4) ? true : false;
257  case barrel:
258  return (abs(eta) < 1.1) ? true : false;
259  case endcap:
260  return (abs(eta) >= 1.1 && abs(eta) <= 2.4) ? true : false;
261  default: {
262  LogDebug("MuonTrackResidualAnalyzer") << "No correct Eta range selected!! ";
263  return false;
264  }
265  }
266 }
#define LogDebug(id)
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
map< DetId, const PSimHit * > MuonTrackResidualAnalyzer::mapMuSimHitsPerId ( edm::Handle< edm::PSimHitContainer dtSimhits,
edm::Handle< edm::PSimHitContainer cscSimhits,
edm::Handle< edm::PSimHitContainer rpcSimhits 
)
private

Definition at line 269 of file MuonTrackResidualAnalyzer.cc.

References KineDebug3::count(), debug, MuonPatternRecoDumper::dumpMuonId(), LogDebug, and LogTrace.

271  {
273 
274  map<DetId, const PSimHit *> hitIdMap;
275  theSimHitContainer.clear();
276 
277  mapMuSimHitsPerId(dtSimhits, hitIdMap);
278  mapMuSimHitsPerId(cscSimhits, hitIdMap);
279  mapMuSimHitsPerId(rpcSimhits, hitIdMap);
280 
281  if (theSimHitContainer.size() > 1)
282  stable_sort(
283  theSimHitContainer.begin(), theSimHitContainer.end(), RadiusComparatorInOut(theService->trackingGeometry()));
284 
285  LogDebug("MuonTrackResidualAnalyzer") << "Sim Hit list";
286  int count = 1;
287  for (vector<const PSimHit *>::const_iterator it = theSimHitContainer.begin(); it != theSimHitContainer.end(); ++it) {
288  LogTrace("MuonTrackResidualAnalyzer")
289  << count << " "
290  << " Process Type: " << (*it)->processType() << " " << debug.dumpMuonId(DetId((*it)->detUnitId())) << endl;
291  }
292 
293  return hitIdMap;
294 }
#define LogDebug(id)
std::map< DetId, const PSimHit * > mapMuSimHitsPerId(edm::Handle< edm::PSimHitContainer > dtSimhits, edm::Handle< edm::PSimHitContainer > cscSimhits, edm::Handle< edm::PSimHitContainer > rpcSimhits)
std::vector< const PSimHit * > theSimHitContainer
std::string dumpMuonId(const DetId &id) const
#define LogTrace(id)
Definition: DetId.h:17
#define debug
Definition: HDRShower.cc:19
void MuonTrackResidualAnalyzer::mapMuSimHitsPerId ( edm::Handle< edm::PSimHitContainer simhits,
std::map< DetId, const PSimHit * > &  hitIdMap 
)
private

Definition at line 296 of file MuonTrackResidualAnalyzer.cc.

References funct::abs(), MuonSubdetId::DT, LogDebug, and DetId::rawId().

297  {
298  for (PSimHitContainer::const_iterator simhit = simhits->begin(); simhit != simhits->end(); ++simhit) {
299  if (abs(simhit->particleType()) != 13 && theSimTkId != simhit->trackId())
300  continue;
301 
302  theSimHitContainer.push_back(&*simhit);
303  DetId id = DetId(simhit->detUnitId());
304 
305  if (id.subdetId() == MuonSubdetId::DT) {
306  DTLayerId lId(id.rawId());
307  id = DetId(lId.rawId());
308  }
309 
310  map<DetId, const PSimHit *>::const_iterator it = hitIdMap.find(id);
311 
312  if (it == hitIdMap.end())
313  hitIdMap[id] = &*simhit;
314  else
315  LogDebug("MuonTrackResidualAnalyzer") << "TWO muons in the same sensible volume!!";
316 
318  }
319 }
#define LogDebug(id)
std::vector< const PSimHit * > theSimHitContainer
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
Definition: DetId.h:17
static constexpr int DT
Definition: MuonSubdetId.h:11

Member Data Documentation

edm::InputTag MuonTrackResidualAnalyzer::cscSimHitLabel
private

Definition at line 88 of file MuonTrackResidualAnalyzer.h.

DQMStore* MuonTrackResidualAnalyzer::dbe_
private

Definition at line 77 of file MuonTrackResidualAnalyzer.h.

std::string MuonTrackResidualAnalyzer::dirName_
private

Definition at line 78 of file MuonTrackResidualAnalyzer.h.

edm::InputTag MuonTrackResidualAnalyzer::dtSimHitLabel
private

Definition at line 89 of file MuonTrackResidualAnalyzer.h.

HResolution1DRecHit* MuonTrackResidualAnalyzer::h1DRecHitRes
private

Definition at line 105 of file MuonTrackResidualAnalyzer.h.

HResolution1DRecHit* MuonTrackResidualAnalyzer::h1DSimHitRes
private

Definition at line 108 of file MuonTrackResidualAnalyzer.h.

MonitorElement* MuonTrackResidualAnalyzer::hDeltaPtVsEtaSim
private

Definition at line 112 of file MuonTrackResidualAnalyzer.h.

MonitorElement* MuonTrackResidualAnalyzer::hDeltaPtVsEtaSim2
private

Definition at line 113 of file MuonTrackResidualAnalyzer.h.

MonitorElement* MuonTrackResidualAnalyzer::hDPtRef
private

Definition at line 102 of file MuonTrackResidualAnalyzer.h.

MonitorElement* MuonTrackResidualAnalyzer::hSimHitsPerTrack
private

Definition at line 110 of file MuonTrackResidualAnalyzer.h.

MonitorElement* MuonTrackResidualAnalyzer::hSimHitsPerTrackVsEta
private

Definition at line 111 of file MuonTrackResidualAnalyzer.h.

std::string MuonTrackResidualAnalyzer::out
private

Definition at line 81 of file MuonTrackResidualAnalyzer.h.

edm::ParameterSet MuonTrackResidualAnalyzer::pset
private

Definition at line 80 of file MuonTrackResidualAnalyzer.h.

edm::InputTag MuonTrackResidualAnalyzer::rpcSimHitLabel
private

Definition at line 90 of file MuonTrackResidualAnalyzer.h.

std::string MuonTrackResidualAnalyzer::subsystemname_
private

Definition at line 79 of file MuonTrackResidualAnalyzer.h.

edm::EDGetTokenT<std::vector<PSimHit> > MuonTrackResidualAnalyzer::theCSCSimHitToken
private

Definition at line 93 of file MuonTrackResidualAnalyzer.h.

edm::InputTag MuonTrackResidualAnalyzer::theDataType
private

Definition at line 83 of file MuonTrackResidualAnalyzer.h.

edm::EDGetTokenT<edm::SimTrackContainer> MuonTrackResidualAnalyzer::theDataTypeToken
private

Definition at line 84 of file MuonTrackResidualAnalyzer.h.

edm::EDGetTokenT<std::vector<PSimHit> > MuonTrackResidualAnalyzer::theDTSimHitToken
private

Definition at line 94 of file MuonTrackResidualAnalyzer.h.

MeasurementEstimator* MuonTrackResidualAnalyzer::theEstimator
private

Definition at line 99 of file MuonTrackResidualAnalyzer.h.

EtaRange MuonTrackResidualAnalyzer::theEtaRange
private

Definition at line 85 of file MuonTrackResidualAnalyzer.h.

int MuonTrackResidualAnalyzer::theMuonSimHitNumberPerEvent
private

Definition at line 115 of file MuonTrackResidualAnalyzer.h.

edm::InputTag MuonTrackResidualAnalyzer::theMuonTrackLabel
private

Definition at line 87 of file MuonTrackResidualAnalyzer.h.

edm::EDGetTokenT<reco::TrackCollection> MuonTrackResidualAnalyzer::theMuonTrackToken
private

Definition at line 92 of file MuonTrackResidualAnalyzer.h.

edm::EDGetTokenT<std::vector<PSimHit> > MuonTrackResidualAnalyzer::theRPCSimHitToken
private

Definition at line 95 of file MuonTrackResidualAnalyzer.h.

MuonServiceProxy* MuonTrackResidualAnalyzer::theService
private

Definition at line 97 of file MuonTrackResidualAnalyzer.h.

std::vector<const PSimHit *> MuonTrackResidualAnalyzer::theSimHitContainer
private

Definition at line 119 of file MuonTrackResidualAnalyzer.h.

unsigned int MuonTrackResidualAnalyzer::theSimTkId
private

Definition at line 117 of file MuonTrackResidualAnalyzer.h.

KFUpdator* MuonTrackResidualAnalyzer::theUpdator
private

Definition at line 98 of file MuonTrackResidualAnalyzer.h.