CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
TrackingRecoMaterialAnalyser Class Reference
Inheritance diagram for TrackingRecoMaterialAnalyser:
DQMEDAnalyzer edm::stream::EDAnalyzer< edm::RunSummaryCache< dqmDetails::NoCache >, edm::LuminosityBlockSummaryCache< dqmDetails::NoCache > > edm::stream::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
virtual void bookHistograms (DQMStore::IBooker &i, edm::Run const &, edm::EventSetup const &) override
 
 TrackingRecoMaterialAnalyser (const edm::ParameterSet &)
 
virtual ~TrackingRecoMaterialAnalyser ()
 
- 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
 
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
 
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
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

bool isDoubleSided (SiStripDetId strip_id)
 

Private Attributes

const edm::EDGetTokenT< reco::BeamSpotbeamspotToken_
 
MonitorElementdeltaP_in_out_vs_eta_
 
MonitorElementdeltaP_in_out_vs_eta_2d_
 
MonitorElementdeltaP_in_out_vs_eta_vs_phi_2d_
 
MonitorElementdeltaP_in_out_vs_z_
 
MonitorElementdeltaP_in_out_vs_z_2d_
 
MonitorElementdeltaPl_in_out_vs_eta_
 
MonitorElementdeltaPl_in_out_vs_z_
 
MonitorElementdeltaPt_in_out_2d_
 
MonitorElementdeltaPt_in_out_vs_eta_
 
MonitorElementdeltaPt_in_out_vs_z_
 
std::string folder_
 
MonitorElementhisto_RZ_
 
MonitorElementhisto_RZ_Ori_
 
std::unordered_map< std::string, MonitorElement * > histosEta_
 
std::unordered_map< std::string, MonitorElement * > histosOriEta_
 
MonitorElementP_vs_eta_2d_
 
TrackTransformer refitter_
 
const edm::EDGetTokenT< reco::TrackCollectiontracksToken_
 
bool usePV_
 
const edm::EDGetTokenT< reco::VertexCollectionverticesToken_
 

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, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
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::NoCacheglobalBeginLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, LuminosityBlockContext const *)
 
static std::shared_ptr< dqmDetails::NoCacheglobalBeginRunSummary (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

Definition at line 34 of file TrackingRecoMaterialAnalyser.cc.

Constructor & Destructor Documentation

TrackingRecoMaterialAnalyser::TrackingRecoMaterialAnalyser ( const edm::ParameterSet iPSet)
explicit

Definition at line 70 of file TrackingRecoMaterialAnalyser.cc.

70  :
71  refitter_(iPSet),
72  tracksToken_(consumes<reco::TrackCollection>(iPSet.getParameter<edm::InputTag>("tracks"))),
73  beamspotToken_(consumes<reco::BeamSpot>(iPSet.getParameter<edm::InputTag>("beamspot"))),
74  verticesToken_(mayConsume<reco::VertexCollection>(iPSet.getParameter<edm::InputTag>("vertices"))),
75  usePV_(iPSet.getParameter<bool>("usePV")),
76  folder_(iPSet.getParameter<std::string>("folder")),
77  histo_RZ_(0),
78  histo_RZ_Ori_(0),
89  P_vs_eta_2d_(0)
90 {
91 }
T getParameter(std::string const &) const
const edm::EDGetTokenT< reco::VertexCollection > verticesToken_
const edm::EDGetTokenT< reco::TrackCollection > tracksToken_
const edm::EDGetTokenT< reco::BeamSpot > beamspotToken_
TrackingRecoMaterialAnalyser::~TrackingRecoMaterialAnalyser ( void  )
virtual

Definition at line 94 of file TrackingRecoMaterialAnalyser.cc.

95 {
96 }

Member Function Documentation

void TrackingRecoMaterialAnalyser::analyze ( const edm::Event event,
const edm::EventSetup setup 
)
override

Definition at line 189 of file TrackingRecoMaterialAnalyser.cc.

References funct::abs(), ecalDrivenElectronSeedsParameters_cff::beamSpot, beamspotToken_, DEFINE_FWK_MODULE, deltaP_in_out_vs_eta_, deltaP_in_out_vs_eta_2d_, deltaP_in_out_vs_eta_vs_phi_2d_, deltaP_in_out_vs_z_, deltaP_in_out_vs_z_2d_, deltaPl_in_out_vs_eta_, deltaPl_in_out_vs_z_, deltaPt_in_out_2d_, deltaPt_in_out_vs_eta_, deltaPt_in_out_vs_z_, reco::TrackBase::dxy(), PV3DBase< T, PVType, FrameType >::eta(), reco::TrackBase::eta(), MonitorElement::Fill(), HcalObjRepresent::Fill(), edm::EventSetup::get(), TrajectoryStateOnSurface::globalPosition(), histo_RZ_, histo_RZ_Ori_, histosEta_, histosOriEta_, reco::TrackBase::hitPattern(), SurfaceOrientation::inner, reco::Track::innerMomentum(), isDoubleSided(), reco::Vertex::isFake(), MediumProperties::isValid(), TrajectoryStateOnSurface::isValid(), edm::HandleBase::isValid(), TrackerTopology::layer(), TrajectoryStateOnSurface::localMomentum(), LogTrace, Surface::mediumProperties(), TrackingRecHit::missing, reco::Vertex::ndof(), reco::HitPattern::numberOfLostTrackerHits(), SurfaceOrientation::outer, reco::Track::outerMomentum(), reco::Track::outerPosition(), reco::Track::outerZ(), reco::TrackBase::p(), p2, P_vs_eta_2d_, PV3DBase< T, PVType, FrameType >::perp(), reco::BeamSpot::position(), reco::Vertex::position(), MetAnalyzer::pv(), reco::TrackBase::quality(), reco::TrackBase::qualityByName(), MediumProperties::radLen(), refitter_, sDETS, TrackTransformer::setServices(), mathSSE::sqrt(), DetId::subdetId(), TrajectoryStateOnSurface::surface(), HiIsolationCommonParameters_cff::track, l1t::tracks, tracksToken_, TrackTransformer::transform(), usePV_, findQualityFiles::v, TrackingRecHit::valid, ecalDrivenElectronSeedsParameters_cff::vertices, verticesToken_, hybridSuperClusters_cfi::xi, MediumProperties::xi(), PV3DBase< T, PVType, FrameType >::z(), and reco::Vertex::z().

191 {
192  using namespace edm;
193  using namespace reco;
194  using namespace std;
195 
196  refitter_.setServices(setup);
197 
200  ESHandle<TrackerTopology> trk_topology;
201 
202  // Get the TrackerTopology
203  setup.get<TrackerTopologyRcd>().get(trk_topology);
204 
205  // Get Tracks
206  event.getByToken(tracksToken_, tracks);
207  if (!tracks.isValid() || tracks->size() == 0) {
208  LogInfo("TrackingRecoMaterialAnalyser") << "Invalid or empty track collection" << endl;
209  return;
210  }
211 
212  // Track Selector
213  auto selector = [](const Track &track, const reco::Vertex::Point &pv) -> bool {
214  return (track.quality(track.qualityByName("highPurity"))
215  && track.dxy(pv) < 0.01
216  && track.hitPattern().numberOfLostTrackerHits(HitPattern::MISSING_OUTER_HITS) == 0);
217  };
218 
219  // Get BeamSpot
221  event.getByToken(beamspotToken_, beamSpot);
222  // Bail out if missing
223  if (!beamSpot.isValid())
224  return;
225 
226  reco::Vertex::Point pv(beamSpot->position());
227  if (usePV_) {
228  event.getByToken(verticesToken_, vertices);
229  if (vertices.isValid() && vertices->size() != 0) {
230  // Since we need to use eta and Z information from the tracks, in
231  // order not to have the reco material distribution washed out due
232  // to geometrical effects, we need to confine the PV to some small
233  // region.
234  const Vertex &v = (*vertices)[0];
235  if (!v.isFake() && v.ndof() > 4
236  && std::fabs(v.z()) < 24
237  && std::fabs(v.position().rho()) < 2)
238  pv = v.position();
239  }
240  }
241 
242  // Main idea:
243  // * select first good tracks in input, according to reasonable criteria
244  // * refit the tracks so that we have access to the TrajectoryMeasurements
245  // that internally have all the information about the TSOS on all
246  // crossed layers. We need the refit track and not the original one so
247  // that we are able to correctly compute the path travelled by the track
248  // within the detector, using its updated TSOS. The material description
249  // can in principle be derived also directly from the rechits, via the
250  // det()[(->)GeomDet *]->mediumProperties chain, but that would simply give the
251  // face values, not the "real" ones used while propagating the track.
252  // * Loop on all measurements, extract the information about the TSOS,
253  // its surface and its mediumProperties
254  // * Make plots for the untouched material properties, but also for the
255  // ones corrected by the track direction, since the material properties,
256  // according to the documentation, should refer to normal incidence of
257  // the track, which is seldom the case, according to the current direction
258  TrajectoryStateOnSurface current_tsos;
259  DetId current_det;
260  for (auto const track : *tracks) {
261  if (!selector(track, pv))
262  continue;
263  auto const inner = track.innerMomentum();
264  auto const outer = track.outerMomentum();
265  deltaP_in_out_vs_eta_->Fill(inner.eta(), inner.R() - outer.R());
266  deltaP_in_out_vs_z_->Fill(track.outerZ(), inner.R() - outer.R());
267  deltaP_in_out_vs_eta_2d_->Fill(inner.eta(), inner.R() - outer.R());
268  deltaP_in_out_vs_eta_vs_phi_2d_->Fill(inner.eta(), inner.phi(), inner.R() - outer.R());
269  deltaP_in_out_vs_z_2d_->Fill(track.outerZ(), inner.R() - outer.R());
270  deltaPt_in_out_vs_eta_->Fill(inner.eta(), inner.rho() - outer.rho());
271  deltaPt_in_out_vs_z_->Fill(track.outerZ(), inner.rho() - outer.rho());
272  deltaPl_in_out_vs_eta_->Fill(inner.eta(), inner.z() - outer.z());
273  deltaPl_in_out_vs_z_->Fill(track.outerZ(), inner.z() - outer.z());
274  deltaPt_in_out_2d_->Fill(track.outerZ(), track.outerPosition().rho(), inner.rho() - outer.rho());
275  P_vs_eta_2d_->Fill(track.eta(), track.p());
276  vector<Trajectory> traj = refitter_.transform(track);
277  if (traj.size() > 1 || traj.size() == 0)
278  continue;
279  for (auto const &tm : traj.front().measurements()) {
280  if (tm.recHit().get() &&
281  (tm.recHitR().type() == TrackingRecHit::valid ||
282  tm.recHitR().type() == TrackingRecHit::missing)) {
283  current_tsos = tm.updatedState().isValid() ? tm.updatedState() : tm.forwardPredictedState();
284  auto const & localP = current_tsos.localMomentum();
285  current_det = tm.recHit()->geographicalId();
286  const Surface& surface = current_tsos.surface();
287  assert(tm.recHit()->surface() == &surface);
288  if (!surface.mediumProperties().isValid()) {
289  LogError("TrackingRecoMaterialAnalyser")
290  << "Medium properties for material linked to detector"
291  << " are invalid at: "
292  << current_tsos.globalPosition() << " "
293  << (SiStripDetId)current_det << endl;
294  assert(0);
295  continue;
296  }
297  float p2 = localP.mag2();
298  float xf = std::abs(std::sqrt(p2)/localP.z());
299  float ori_xi = surface.mediumProperties().xi();
300  float ori_radLen = surface.mediumProperties().radLen();
301  float xi = ori_xi*xf;
302  float radLen = ori_radLen*xf;
303 
304  // NOTA BENE: THIS ASSUMES THAT THE TRACKS HAVE BEEN PRODUCED
305  // WITH SPLITTING, AS IS THE CASE FOR THE generalTracks
306  // collection.
307 
308  // Since there are double-sided (glued) modules all over the
309  // tracker, the material budget has been internally
310  // partitioned in two equal components, so that each single
311  // layer will receive half of the correct radLen. For this
312  // reason, only for the double-sided components, we rescale
313  // the obtained radLen by 2.
314 
315  // In particular see code here:
316  // http://cmslxr.fnal.gov/dxr/CMSSW_8_0_5/source/Geometry/TrackerGeometryBuilder/src/TrackerGeomBuilderFromGeometricDet.cc#213
317  // where, in the SiStrip Tracker, if the module has a partner
318  // (i.e. it's a glued detector) the plane is built with a
319  // scaling of 0.5. The actual plane is built few lines below:
320  // http://cmslxr.fnal.gov/dxr/CMSSW_8_0_5/source/Geometry/TrackerGeometryBuilder/src/TrackerGeomBuilderFromGeometricDet.cc#287
321 
322  if (isDoubleSided(current_det)) {
323  LogTrace("TrackingRecoMaterialAnalyser") << "Eta: " << track.eta() << " "
324  << sDETS[current_det.subdetId()] << trk_topology->layer(current_det)
325  << " has ori_radLen: " << ori_radLen << " and ori_xi: " << xi
326  << " and has radLen: " << radLen << " and xi: " << xi << endl;
327  ori_radLen *= 2.;
328  radLen *= 2.;
329  }
330 
331  histosOriEta_[sDETS[current_det.subdetId()]+to_string(trk_topology->layer(current_det))]->Fill(current_tsos.globalPosition().eta(), ori_radLen);
332  histosEta_[sDETS[current_det.subdetId()]+to_string(trk_topology->layer(current_det))]->Fill(current_tsos.globalPosition().eta(), radLen);
333  histo_RZ_Ori_->Fill(current_tsos.globalPosition().z(), current_tsos.globalPosition().perp(), ori_radLen);
334  histo_RZ_->Fill(current_tsos.globalPosition().z(), current_tsos.globalPosition().perp(), radLen);
335  LogInfo("TrackingRecoMaterialAnalyser") << "Eta: " << track.eta() << " "
336  << sDETS[current_det.subdetId()] << trk_topology->layer(current_det)
337  << " has ori_radLen: " << ori_radLen << " and ori_xi: " << xi
338  << " and has radLen: " << radLen << " and xi: " << xi << endl;
339  }
340  }
341  }
342 }
double p() const
momentum vector magnitude
Definition: TrackBase.h:615
const edm::EDGetTokenT< reco::VertexCollection > verticesToken_
float radLen() const
T perp() const
Definition: PV3DBase.h:72
void setServices(const edm::EventSetup &) override
set the services needed by the TrackTransformer
GlobalPoint globalPosition() const
std::unordered_map< std::string, MonitorElement * > histosEta_
const edm::EDGetTokenT< reco::TrackCollection > tracksToken_
const edm::EDGetTokenT< reco::BeamSpot > beamspotToken_
const math::XYZPoint & outerPosition() const
position of the outermost hit
Definition: Track.h:65
const Point & position() const
position
Definition: Vertex.h:109
static const std::vector< std::string > sDETS
double outerZ() const
z coordinate of the outermost hit position
Definition: Track.h:149
void Fill(long long x)
int numberOfLostTrackerHits(HitCategory category) const
Definition: HitPattern.h:907
std::unordered_map< std::string, MonitorElement * > histosOriEta_
LocalVector localMomentum() const
const SurfaceType & surface() const
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:651
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
T sqrt(T t)
Definition: SSEVec.h:18
T z() const
Definition: PV3DBase.h:64
def pv(vc)
Definition: MetAnalyzer.py:6
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
double z() const
z coordinate
Definition: Vertex.h:115
math::XYZPoint Point
point in the space
Definition: Vertex.h:39
std::vector< Trajectory > transform(const reco::Track &) const override
Convert a reco::Track into Trajectory.
bool isValid() const
Definition: HandleBase.h:74
int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:37
double p2[4]
Definition: TauolaWrapper.h:90
#define LogTrace(id)
double ndof() const
Definition: Vertex.h:105
Detector identifier class for the strip tracker.
Definition: SiStripDetId.h:17
Definition: DetId.h:18
static TrackQuality qualityByName(const std::string &name)
Definition: TrackBase.cc:125
const math::XYZVector & outerMomentum() const
momentum vector at the outermost hit position
Definition: Track.h:70
bool isFake() const
Definition: Vertex.h:72
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
Definition: TrackBase.h:446
float xi() const
const T & get() const
Definition: EventSetup.h:55
bool quality(const TrackQuality) const
Track quality.
Definition: TrackBase.h:510
unsigned int layer(const DetId &id) const
T eta() const
Definition: PV3DBase.h:76
fixed size matrix
HLT enums.
const math::XYZVector & innerMomentum() const
momentum vector at the innermost hit position
Definition: Track.h:60
bool isDoubleSided(SiStripDetId strip_id)
const Point & position() const
position
Definition: BeamSpot.h:62
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
Definition: TrackBase.h:591
bool isValid() const
const MediumProperties & mediumProperties() const
Definition: Surface.h:112
void TrackingRecoMaterialAnalyser::bookHistograms ( DQMStore::IBooker i,
edm::Run const &  ,
edm::EventSetup const &  setup 
)
overridevirtual

Implements DQMEDAnalyzer.

Definition at line 99 of file TrackingRecoMaterialAnalyser.cc.

References DQMStore::IBooker::book2D(), DQMStore::IBooker::bookProfile(), DQMStore::IBooker::bookProfile2D(), data, deltaP_in_out_vs_eta_, deltaP_in_out_vs_eta_2d_, deltaP_in_out_vs_eta_vs_phi_2d_, deltaP_in_out_vs_z_, deltaP_in_out_vs_z_2d_, deltaPl_in_out_vs_eta_, deltaPl_in_out_vs_z_, deltaPt_in_out_2d_, deltaPt_in_out_vs_eta_, deltaPt_in_out_vs_z_, folder_, edm::EventSetup::get(), histo_RZ_, histo_RZ_Ori_, histosEta_, histosOriEta_, crabWrapper::key, TrackerGeometry::numberOfLayers(), P_vs_eta_2d_, sDETS, DQMStore::IBooker::setCurrentFolder(), and fftjetcommon_cfi::title.

101  {
102  using namespace std;
103  edm::ESHandle<TrackerGeometry> trackerGeometry;
104  setup.get<TrackerDigiGeometryRecord>().get(trackerGeometry);
105 
106  ibook.setCurrentFolder(folder_);
107 
108  // Histogram to store the radiation length map, in the R-Z plane,
109  // gathering numbers directly from the trackerRecoMaterial.xml
110  // file. The numbers are not corrected for the track angle.
111  histo_RZ_Ori_ = ibook.bookProfile2D("OriRadLen", "Original_RadLen",
112  600, -300., 300, 120, 0., 120., 0., 1.);
113 
114  // Histogram to store the radiation length map, as before, but
115  // correcting the numbers with the track angle. This represents the
116  // real material seen by the track.
117  histo_RZ_ = ibook.bookProfile2D("RadLen", "RadLen",
118  600, -300., 300, 120, 0., 120., 0., 1.);
119 
120  // Histogram to show the deltaP Out-In in the eta-phi plane.
121  deltaP_in_out_vs_eta_vs_phi_2d_ = ibook.bookProfile2D("DeltaP_in_out_vs_eta_vs_phi_2d",
122  "DeltaP_in_out_vs_eta_vs_phi_2d",
123  100, -3.0, 3.0,
124  100, -3.15, 3.15,
125  0., 100.);
126 
127  // Histogram to show the deltaP Out-In vs eta.
128  deltaP_in_out_vs_eta_2d_ = ibook.book2D("DeltaP_in_out_vs_eta_2d", "DeltaP_in_out_vs_eta_2d",
129  100, -3.0, 3.0, 100, 0., 1);
130 
131  // Histogram to show the deltaP Out-In vs Z. The Z coordinate is the
132  // one computed at the outermost hit.
133  deltaP_in_out_vs_z_2d_ = ibook.book2D("DeltaP_in_out_vs_z_2d", "DeltaP_in_out_vs_z_2d",
134  600, -300, 300, 200., -1, 1.);
135 
136  // Histogram to show the deltaP Out-In vs eta. The eta is the one
137  // computed at the innermost hit.
138  deltaP_in_out_vs_eta_ = ibook.bookProfile("DeltaP_in_out_vs_eta", "DeltaP_in_out_vs_eta",
139  100, -3.0, 3.0, -100., 100.);
140  deltaP_in_out_vs_z_ = ibook.bookProfile("DeltaP_in_out_vs_z", "DeltaP_in_out_vs_z",
141  600, -300, 300, -100., 100.);
142 
143  // Histogram to show the delta_Pt Out-In vs eta. The eta is the one
144  // computed at the innermost hit.
145  deltaPt_in_out_vs_eta_ = ibook.bookProfile("DeltaPt_in_out_vs_eta", "DeltaPt_in_out_vs_eta",
146  100, -3.0, 3.0, -100., 100.);
147 
148  // Histogram to show the delta_Pt Out-In vs Z. The Z is the one
149  // computed at the outermost hit.
150  deltaPt_in_out_vs_z_ = ibook.bookProfile("DeltaPt_in_out_vs_z", "DeltaPt_in_out_vs_z",
151  600, -300, 300, -100., 100);
152 
153  // Histogram to show the delta_Pl Out-In vs eta. The eta is the one
154  // computed at the innermost hit.
155  deltaPl_in_out_vs_eta_ = ibook.bookProfile("DeltaPz_in_out_vs_eta", "DeltaPz_in_out_vs_eta",
156  100, -3.0, 3.0, -100., 100.);
157 
158  // Histogram to show the delta_Pl Out-In vs Z. The Z is the one
159  // computed at the outermost hit.
160  deltaPl_in_out_vs_z_ = ibook.bookProfile("DeltaPz_in_out_vs_z", "DeltaPz_in_out_vs_z",
161  600, -300, 300, -100., 100.);
162 
163  // Histogram to show the delta_Pt Out-In in the Z-R plane. Z and R
164  // are related to the outermost hit.
165  deltaPt_in_out_2d_ = ibook.bookProfile2D("DeltaPt 2D", "DeltaPt 2D",
166  600, -300., 300, 120, 0., 120., -100., 100.);
167 
168  // Histogram to show the distribution of p vs eta for all tracks.
169  P_vs_eta_2d_ = ibook.book2D("P_vs_eta_2d", "P_vs_eta_2d",
170  100, -3.0, 3.0, 100., 0., 5.);
171  char title[50];
172  char key[20];
173  for (unsigned int det = 1; det < sDETS.size(); ++det ) {
174  for (unsigned int sub_det = 1;
175  sub_det <= trackerGeometry->numberOfLayers(det); ++sub_det) {
176  memset(title, 0, sizeof(title));
177  snprintf(title, sizeof(title), "Original_RadLen_vs_Eta_%s%d", sDETS[det].data(), sub_det);
178  snprintf(key, sizeof(key), "%s%d", sDETS[det].data(), sub_det);
179  histosOriEta_.insert(make_pair<string, MonitorElement*>(key,
180  ibook.bookProfile(title, title, 250, -5.0, 5.0, 0., 1.)));
181  snprintf(title, sizeof(title), "RadLen_vs_Eta_%s%d", sDETS[det].data(), sub_det);
182  histosEta_.insert(make_pair<string, MonitorElement*>(key,
183  ibook.bookProfile(title, title, 250, -5.0, 5.0, 0., 1.)));
184  }
185  }
186 }
def setup(process, global_tag, zero_tesla=False)
Definition: GeneralSetup.py:1
std::unordered_map< std::string, MonitorElement * > histosEta_
static const std::vector< std::string > sDETS
unsigned int numberOfLayers(int subdet) const
std::unordered_map< std::string, MonitorElement * > histosOriEta_
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
bool TrackingRecoMaterialAnalyser::isDoubleSided ( SiStripDetId  strip_id)
inlineprivate

Definition at line 43 of file TrackingRecoMaterialAnalyser.cc.

References SiStripDetId::glued(), SiStripDetId::subDetector(), and SiStripDetId::UNKNOWN.

Referenced by analyze().

43  {
44  return ((strip_id.subDetector() != SiStripDetId::UNKNOWN) && strip_id.glued());
45  }
SubDetector subDetector() const
Definition: SiStripDetId.h:114
uint32_t glued() const
Definition: SiStripDetId.h:155

Member Data Documentation

const edm::EDGetTokenT<reco::BeamSpot> TrackingRecoMaterialAnalyser::beamspotToken_
private

Definition at line 48 of file TrackingRecoMaterialAnalyser.cc.

Referenced by analyze().

MonitorElement* TrackingRecoMaterialAnalyser::deltaP_in_out_vs_eta_
private

Definition at line 57 of file TrackingRecoMaterialAnalyser.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingRecoMaterialAnalyser::deltaP_in_out_vs_eta_2d_
private

Definition at line 59 of file TrackingRecoMaterialAnalyser.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingRecoMaterialAnalyser::deltaP_in_out_vs_eta_vs_phi_2d_
private

Definition at line 60 of file TrackingRecoMaterialAnalyser.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingRecoMaterialAnalyser::deltaP_in_out_vs_z_
private

Definition at line 58 of file TrackingRecoMaterialAnalyser.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingRecoMaterialAnalyser::deltaP_in_out_vs_z_2d_
private

Definition at line 61 of file TrackingRecoMaterialAnalyser.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingRecoMaterialAnalyser::deltaPl_in_out_vs_eta_
private

Definition at line 64 of file TrackingRecoMaterialAnalyser.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingRecoMaterialAnalyser::deltaPl_in_out_vs_z_
private

Definition at line 65 of file TrackingRecoMaterialAnalyser.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingRecoMaterialAnalyser::deltaPt_in_out_2d_
private

Definition at line 56 of file TrackingRecoMaterialAnalyser.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingRecoMaterialAnalyser::deltaPt_in_out_vs_eta_
private

Definition at line 62 of file TrackingRecoMaterialAnalyser.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingRecoMaterialAnalyser::deltaPt_in_out_vs_z_
private

Definition at line 63 of file TrackingRecoMaterialAnalyser.cc.

Referenced by analyze(), and bookHistograms().

std::string TrackingRecoMaterialAnalyser::folder_
private

Definition at line 51 of file TrackingRecoMaterialAnalyser.cc.

Referenced by bookHistograms().

MonitorElement* TrackingRecoMaterialAnalyser::histo_RZ_
private

Definition at line 54 of file TrackingRecoMaterialAnalyser.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingRecoMaterialAnalyser::histo_RZ_Ori_
private

Definition at line 55 of file TrackingRecoMaterialAnalyser.cc.

Referenced by analyze(), and bookHistograms().

std::unordered_map<std::string, MonitorElement *> TrackingRecoMaterialAnalyser::histosEta_
private

Definition at line 53 of file TrackingRecoMaterialAnalyser.cc.

Referenced by analyze(), and bookHistograms().

std::unordered_map<std::string, MonitorElement *> TrackingRecoMaterialAnalyser::histosOriEta_
private

Definition at line 52 of file TrackingRecoMaterialAnalyser.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingRecoMaterialAnalyser::P_vs_eta_2d_
private

Definition at line 66 of file TrackingRecoMaterialAnalyser.cc.

Referenced by analyze(), and bookHistograms().

TrackTransformer TrackingRecoMaterialAnalyser::refitter_
private

Definition at line 46 of file TrackingRecoMaterialAnalyser.cc.

Referenced by analyze().

const edm::EDGetTokenT<reco::TrackCollection> TrackingRecoMaterialAnalyser::tracksToken_
private

Definition at line 47 of file TrackingRecoMaterialAnalyser.cc.

Referenced by analyze().

bool TrackingRecoMaterialAnalyser::usePV_
private

Definition at line 50 of file TrackingRecoMaterialAnalyser.cc.

Referenced by analyze().

const edm::EDGetTokenT<reco::VertexCollection> TrackingRecoMaterialAnalyser::verticesToken_
private

Definition at line 49 of file TrackingRecoMaterialAnalyser.cc.

Referenced by analyze().