CMS 3D CMS Logo

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

#include <SiStripMonitorTrack.h>

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

Classes

struct  Det2MEs
 
struct  LayerMEs
 
struct  ModMEs
 
struct  RingMEs
 
struct  SubDetMEs
 

Public Types

typedef
TrackingRecHit::ConstRecHitPointer 
ConstRecHitPointer
 
enum  RecHitType { Single =0, Matched =1, Projected =2, Null =3 }
 
- 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 Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &)
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
void dqmBeginRun (const edm::Run &run, const edm::EventSetup &es)
 
 SiStripMonitorTrack (const edm::ParameterSet &)
 
 ~SiStripMonitorTrack ()
 
- Public Member Functions inherited from DQMEDAnalyzer
virtual void beginRun (edm::Run const &, edm::EventSetup const &) final
 
virtual void beginStream (edm::StreamID id) final
 
 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
 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 Types

enum  ClusterFlags { OffTrack, OnTrack }
 

Private Member Functions

void AllClusters (const edm::Event &ev, const edm::EventSetup &es)
 
void book (DQMStore::IBooker &, const TrackerTopology *tTopo)
 
void bookLayerMEs (DQMStore::IBooker &, const uint32_t, std::string &)
 
MonitorElementbookME1D (DQMStore::IBooker &, const char *, const char *)
 
MonitorElementbookME2D (DQMStore::IBooker &, const char *, const char *)
 
MonitorElementbookME3D (DQMStore::IBooker &, const char *, const char *)
 
MonitorElementbookMEProfile (DQMStore::IBooker &, const char *, const char *)
 
MonitorElementbookMETrend (DQMStore::IBooker &, const char *)
 
void bookModMEs (DQMStore::IBooker &, const uint32_t)
 
void bookRing (DQMStore::IBooker &, const uint32_t, std::string &)
 
void bookRingMEs (DQMStore::IBooker &, const uint32_t, std::string &)
 
void bookSubDetMEs (DQMStore::IBooker &, std::string &name)
 
bool clusterInfos (SiStripClusterInfo *cluster, const uint32_t detid, enum ClusterFlags flags, LocalVector LV, const Det2MEs &MEs)
 
void fillME (MonitorElement *ME, float value1)
 
void fillME (MonitorElement *ME, float value1, float value2)
 
void fillME (MonitorElement *ME, float value1, float value2, float value3)
 
void fillME (MonitorElement *ME, float value1, float value2, float value3, float value4)
 
void fillMEs (SiStripClusterInfo *, const uint32_t detid, float, enum ClusterFlags, const LocalVector LV, const Det2MEs &MEs)
 
void fillModMEs (SiStripClusterInfo *cluster, std::string name, float cos, const uint32_t detid, const LocalVector LV)
 
Det2MEs findMEs (const TrackerTopology *tTopo, const uint32_t detid)
 
MonitorElementhandleBookMEs (DQMStore::IBooker &, std::string &, std::string &, std::string &, std::string &)
 
void hitStudy (const edm::EventSetup &es, const ProjectedSiStripRecHit2D *projhit, const SiStripMatchedRecHit2D *matchedhit, const SiStripRecHit2D *hit2D, const SiStripRecHit1D *hit1D, LocalVector localMomentum)
 
template<class T >
void RecHitInfo (const T *tkrecHit, LocalVector LV, const edm::EventSetup &)
 
void trackStudy (const edm::Event &ev, const edm::EventSetup &es)
 
void trackStudyFromTrack (edm::Handle< reco::TrackCollection > trackCollectionHandle, const edm::EventSetup &es)
 
void trackStudyFromTrajectory (edm::Handle< TrajTrackAssociationCollection > TItkAssociatorCollection, const edm::EventSetup &es)
 
void trajectoryStudy (const edm::Ref< std::vector< Trajectory > > traj, const edm::EventSetup &es)
 

Private Attributes

bool applyClusterQuality_
 
edm::InputTag Cluster_src_
 
edm::EDGetTokenT
< edmNew::DetSetVector
< SiStripCluster > > 
clusterToken_
 
edm::ParameterSet conf_
 
SiStripDCSStatusdcsStatus_
 
edm::EventNumber_t eventNb
 
int firstEvent
 
SiStripFolderOrganizer folderOrganizer_
 
GenericTriggerEventFlaggenTriggerEventFlag_
 
std::string histname
 
bool HistoFlag_On_
 
float iLumisection
 
float iOrbitSec
 
std::map< std::string, LayerMEsLayerMEsMap
 
LocalVector LV
 
bool Mod_On_
 
std::map< std::string, ModMEsModMEsMap
 
bool OffHisto_On_
 
edm::ParameterSet Parameters
 
bool ring_flag
 
std::map< std::string, RingMEsRingMEsMap
 
edm::ESHandle< SiStripDetCablingSiStripDetCabling_
 
double sToNLowerLimit_
 
double sToNUpperLimit_
 
std::map< std::string, SubDetMEsSubDetMEsMap
 
edm::ESHandle< TrackerGeometrytkgeom_
 
TkHistoMaptkhisto_NumOffTrack
 
TkHistoMaptkhisto_NumOnTrack
 
TkHistoMaptkhisto_StoNCorrOnTrack
 
bool TkHistoMap_On_
 
std::string topFolderName_
 
bool trackAssociatorCollection_in_EventTree
 
std::string TrackLabel_
 
std::string TrackProducer_
 
bool tracksCollection_in_EventTree
 
edm::EDGetTokenT
< reco::TrackCollection
trackToken_
 
edm::EDGetTokenT
< TrajTrackAssociationCollection
trackTrajToken_
 
bool Trend_On_
 
std::unordered_set< const
SiStripCluster * > 
vPSiStripCluster
 
double widthLowerLimit_
 
double widthUpperLimit_
 

Additional Inherited Members

- 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::stream::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
- 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 61 of file SiStripMonitorTrack.h.

Member Typedef Documentation

Definition at line 63 of file SiStripMonitorTrack.h.

Member Enumeration Documentation

Enumerator
OffTrack 
OnTrack 

Definition at line 72 of file SiStripMonitorTrack.h.

Constructor & Destructor Documentation

SiStripMonitorTrack::SiStripMonitorTrack ( const edm::ParameterSet conf)
explicit

Definition at line 24 of file SiStripMonitorTrack.cc.

References applyClusterQuality_, Cluster_src_, clusterToken_, conf_, edm::EDConsumerBase::consumesCollector(), dcsStatus_, edm::ParameterSet::getParameter(), HLT_25ns14e33_v1_cff::InputTag, Mod_On_, sToNLowerLimit_, sToNUpperLimit_, AlCaHLTBitMon_QueryRunRegistry::string, TkHistoMap_On_, topFolderName_, TrackLabel_, TrackProducer_, trackToken_, trackTrajToken_, Trend_On_, widthLowerLimit_, and widthUpperLimit_.

24  :
25  conf_(conf),
27  firstEvent(-1),
29 {
30  Cluster_src_ = conf.getParameter<edm::InputTag>("Cluster_src");
31  Mod_On_ = conf.getParameter<bool>("Mod_On");
32  Trend_On_ = conf.getParameter<bool>("Trend_On");
33  TkHistoMap_On_ = conf.getParameter<bool>("TkHistoMap_On");
34 
35  TrackProducer_ = conf_.getParameter<std::string>("TrackProducer");
36  TrackLabel_ = conf_.getParameter<std::string>("TrackLabel");
37 
38  topFolderName_ = conf_.getParameter<std::string>("TopFolderName");
39 
40  clusterToken_ = consumes<edmNew::DetSetVector<SiStripCluster> >(Cluster_src_);
41  trackToken_ = consumes<reco::TrackCollection>(edm::InputTag(TrackProducer_,TrackLabel_) );
42  trackTrajToken_ = consumes<TrajTrackAssociationCollection>(edm::InputTag(TrackProducer_,TrackLabel_) );
43 
44  // cluster quality conditions
45  edm::ParameterSet cluster_condition = conf_.getParameter<edm::ParameterSet>("ClusterConditions");
46  applyClusterQuality_ = cluster_condition.getParameter<bool>("On");
47  sToNLowerLimit_ = cluster_condition.getParameter<double>("minStoN");
48  sToNUpperLimit_ = cluster_condition.getParameter<double>("maxStoN");
49  widthLowerLimit_ = cluster_condition.getParameter<double>("minWidth");
50  widthUpperLimit_ = cluster_condition.getParameter<double>("maxWidth");
51 
52 
53  // Create DCS Status
54  bool checkDCS = conf_.getParameter<bool>("UseDCSFiltering");
55  if (checkDCS) dcsStatus_ = new SiStripDCSStatus(consumesCollector());
56  else dcsStatus_ = 0;
57 }
T getParameter(std::string const &) const
edm::EDGetTokenT< reco::TrackCollection > trackToken_
SiStripDCSStatus * dcsStatus_
edm::ParameterSet conf_
Provides a code based selection for trigger and DCS information in order to have no failing filters i...
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
edm::EDGetTokenT< TrajTrackAssociationCollection > trackTrajToken_
GenericTriggerEventFlag * genTriggerEventFlag_
edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > clusterToken_
SiStripMonitorTrack::~SiStripMonitorTrack ( )

Definition at line 60 of file SiStripMonitorTrack.cc.

References dcsStatus_, and genTriggerEventFlag_.

60  {
61  if (dcsStatus_) delete dcsStatus_;
63 }
SiStripDCSStatus * dcsStatus_
GenericTriggerEventFlag * genTriggerEventFlag_

Member Function Documentation

void SiStripMonitorTrack::AllClusters ( const edm::Event ev,
const edm::EventSetup es 
)
private

Definition at line 896 of file SiStripMonitorTrack.cc.

References clusterInfos(), clusterToken_, cond::rpcobgas::detid, findMEs(), edm::EventSetup::get(), edm::Event::getByToken(), edm::HandleBase::isValid(), LogDebug, OffTrack, edm::ESHandle< class >::product(), and vPSiStripCluster.

Referenced by analyze().

897 {
898 
899  //Retrieve tracker topology from geometry
900  edm::ESHandle<TrackerTopology> tTopoHandle;
901  es.get<IdealGeometryRecord>().get(tTopoHandle);
902  const TrackerTopology* const tTopo = tTopoHandle.product();
903 
905  ev.getByToken( clusterToken_, siStripClusterHandle);
906  if (!siStripClusterHandle.isValid()){
907  edm::LogError("SiStripMonitorTrack")<< "ClusterCollection is not valid!!" << std::endl;
908  return;
909  }
910  else
911  {
912  //Loop on Dets
913  for (edmNew::DetSetVector<SiStripCluster>::const_iterator DSViter=siStripClusterHandle->begin();
914  DSViter!=siStripClusterHandle->end();
915  DSViter++)
916  {
917  uint32_t detid=DSViter->id();
918  const Det2MEs MEs = findMEs(tTopo, detid);
919 
920  LogDebug("SiStripMonitorTrack") << "on detid "<< detid << " N Cluster= " << DSViter->size();
921 
922  //Loop on Clusters
924  ClusIter!=DSViter->end();
925  ClusIter++)
926  {
927  if (vPSiStripCluster.find(&*ClusIter) == vPSiStripCluster.end())
928  {
929  SiStripClusterInfo SiStripClusterInfo_(*ClusIter,es,detid);
930  clusterInfos(&SiStripClusterInfo_,detid,OffTrack,LV,MEs);
931  }
932  }
933  }
934  }
935 }
#define LogDebug(id)
Det2MEs findMEs(const TrackerTopology *tTopo, const uint32_t detid)
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:449
data_type const * const_iterator
Definition: DetSetNew.h:30
edmNew::DetSet< SiStripCluster >::const_iterator ClusIter
math::XYZTLorentzVectorD LV
std::unordered_set< const SiStripCluster * > vPSiStripCluster
bool isValid() const
Definition: HandleBase.h:75
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:86
bool clusterInfos(SiStripClusterInfo *cluster, const uint32_t detid, enum ClusterFlags flags, LocalVector LV, const Det2MEs &MEs)
edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > clusterToken_
void SiStripMonitorTrack::analyze ( const edm::Event e,
const edm::EventSetup es 
)
virtual

Implements edm::stream::EDAnalyzerBase.

Definition at line 89 of file SiStripMonitorTrack.cc.

References GenericTriggerEventFlag::accept(), AllClusters(), dcsStatus_, edm::EventID::event(), eventNb, fillME(), genTriggerEventFlag_, SiStripDCSStatus::getStatus(), edm::EventBase::id(), iLumisection, LogDebug, SiStripMonitorTrack::SubDetMEs::nClustersOffTrack, SiStripMonitorTrack::SubDetMEs::nClustersOnTrack, SiStripMonitorTrack::SubDetMEs::nClustersTrendOffTrack, SiStripMonitorTrack::SubDetMEs::nClustersTrendOnTrack, GenericTriggerEventFlag::on(), edm::EventBase::orbitNumber(), edm::EventID::run(), SubDetMEsMap, SiStripMonitorTrack::SubDetMEs::totNClustersOffTrack, SiStripMonitorTrack::SubDetMEs::totNClustersOnTrack, trackStudy(), Trend_On_, and vPSiStripCluster.

90 {
91  // Filter out events if DCS checking is requested
92  if (dcsStatus_ && !dcsStatus_->getStatus(e,es)) return;
93 
94  // Filter out events if Trigger Filtering is requested
95  if (genTriggerEventFlag_->on()&& ! genTriggerEventFlag_->accept( e, es) ) return;
96 
97  //initialization of global quantities
98  LogDebug("SiStripMonitorTrack") << "[SiStripMonitorTrack::analyse] " << "Run " << e.id().run() << " Event " << e.id().event() << std::endl;
99  eventNb = e.id().event();
100  vPSiStripCluster.clear();
101 
102  iLumisection = e.orbitNumber()/262144.0;
103 
104  // initialise # of clusters
105  for (std::map<std::string, SubDetMEs>::iterator iSubDet = SubDetMEsMap.begin();
106  iSubDet != SubDetMEsMap.end(); iSubDet++) {
107  iSubDet->second.totNClustersOnTrack = 0;
108  iSubDet->second.totNClustersOffTrack = 0;
109  }
110 
111  //Perform track study
112  trackStudy(e, es);
113 
114  //Perform Cluster Study (irrespectively to tracks)
115 
116  AllClusters(e, es); //analyzes the off Track Clusters
117 
118  //Summary Counts of clusters
119  std::map<std::string, MonitorElement*>::iterator iME;
120  std::map<std::string, LayerMEs>::iterator iLayerME;
121 
122  for (std::map<std::string, SubDetMEs>::iterator iSubDet = SubDetMEsMap.begin();
123  iSubDet != SubDetMEsMap.end(); iSubDet++) {
124  SubDetMEs subdet_mes = iSubDet->second;
125  if (subdet_mes.totNClustersOnTrack > 0) {
126  fillME(subdet_mes.nClustersOnTrack, subdet_mes.totNClustersOnTrack);
127  }
128  fillME(subdet_mes.nClustersOffTrack, subdet_mes.totNClustersOffTrack);
129  if (Trend_On_) {
130  fillME(subdet_mes.nClustersTrendOnTrack,iLumisection,subdet_mes.totNClustersOnTrack);
131  fillME(subdet_mes.nClustersTrendOffTrack,iLumisection,subdet_mes.totNClustersOffTrack);
132  }
133  }
134 }
#define LogDebug(id)
RunNumber_t run() const
Definition: EventID.h:39
EventNumber_t event() const
Definition: EventID.h:41
void trackStudy(const edm::Event &ev, const edm::EventSetup &es)
void fillME(MonitorElement *ME, float value1)
SiStripDCSStatus * dcsStatus_
void AllClusters(const edm::Event &ev, const edm::EventSetup &es)
bool getStatus(edm::Event const &e, edm::EventSetup const &eSetup)
edm::EventNumber_t eventNb
std::unordered_set< const SiStripCluster * > vPSiStripCluster
std::map< std::string, SubDetMEs > SubDetMEsMap
bool accept(const edm::Event &event, const edm::EventSetup &setup)
To be called from analyze/filter() methods.
int orbitNumber() const
Definition: EventBase.h:67
GenericTriggerEventFlag * genTriggerEventFlag_
edm::EventID id() const
Definition: EventBase.h:60
void SiStripMonitorTrack::book ( DQMStore::IBooker ibooker,
const TrackerTopology tTopo 
)
private

Definition at line 137 of file SiStripMonitorTrack.cc.

References bookLayerMEs(), bookModMEs(), bookRingMEs(), bookSubDetMEs(), cond::rpcobgas::detid, SiStripFolderOrganizer::GetSubDetAndLayer(), SiStripFolderOrganizer::getSubDetFolderAndTag(), SiStripHistoId::getSubdetid(), LayerMEsMap, Mod_On_, mergeVDriftHistosByStation::name, alignCSCRings::ring_id, RingMEsMap, DQMStore::IBooker::setCurrentFolder(), SiStripFolderOrganizer::setDetectorFolder(), SiStripFolderOrganizer::setLayerFolder(), SiStripFolderOrganizer::setSiStripFolderName(), SiStripDetCabling_, AlCaHLTBitMon_QueryRunRegistry::string, SubDetMEsMap, tkhisto_NumOffTrack, tkhisto_NumOnTrack, tkhisto_StoNCorrOnTrack, TkHistoMap_On_, and topFolderName_.

Referenced by bookHistograms().

138 {
139 
140  SiStripFolderOrganizer folder_organizer;
141  folder_organizer.setSiStripFolderName(topFolderName_);
142  //******** TkHistoMaps
143  if (TkHistoMap_On_) {
144  tkhisto_StoNCorrOnTrack = new TkHistoMap(ibooker , topFolderName_ ,"TkHMap_StoNCorrOnTrack", 0.0,true);
145  tkhisto_NumOnTrack = new TkHistoMap(ibooker , topFolderName_, "TkHMap_NumberOfOnTrackCluster", 0.0,true);
146  tkhisto_NumOffTrack = new TkHistoMap(ibooker , topFolderName_, "TkHMap_NumberOfOfffTrackCluster",0.0,true);
147  }
148  //******** TkHistoMaps
149 
150  std::vector<uint32_t> vdetId_;
151  SiStripDetCabling_->addActiveDetectorsRawIds(vdetId_);
152  //Histos for each detector, layer and module
153  for (std::vector<uint32_t>::const_iterator detid_iter=vdetId_.begin();detid_iter!=vdetId_.end();detid_iter++){ //loop on all the active detid
154  uint32_t detid = *detid_iter;
155 
156  if (detid < 1){
157  edm::LogError("SiStripMonitorTrack")<< "[" <<__PRETTY_FUNCTION__ << "] invalid detid " << detid<< std::endl;
158  continue;
159  }
160 
161 
163 
164  // book Layer and RING plots
165  std::pair<std::string,int32_t> det_layer_pair = folder_organizer.GetSubDetAndLayer(detid,tTopo,false);
166  /*
167  std::string thickness;
168  std::pair<std::string,int32_t> det_layer_pair_test = folder_organizer.GetSubDetAndLayerThickness(detid,tTopo,thickness);
169  std::cout << "[SiStripMonitorTrack::book] det_layer_pair " << det_layer_pair.first << " " << det_layer_pair.second << " " << thickness << std::endl;
170  */
171 
172  SiStripHistoId hidmanager;
173  std::string layer_id = hidmanager.getSubdetid(detid, tTopo, false);
174 
175  std::map<std::string, LayerMEs>::iterator iLayerME = LayerMEsMap.find(layer_id);
176  if(iLayerME==LayerMEsMap.end()){
177  folder_organizer.setLayerFolder(detid, tTopo, det_layer_pair.second, false);
178  bookLayerMEs(ibooker , detid, layer_id);
179  }
180 
181  std::string subdet = det_layer_pair.first;
182  if ( subdet.find("TEC") != std::string::npos || subdet.find("TID") != std::string::npos ) {
183  std::pair<std::string,int32_t> det_ring_pair = folder_organizer.GetSubDetAndLayer(detid,tTopo,true);
184  std::string ring_id = hidmanager.getSubdetid(detid, tTopo, true);
185  std::map<std::string, RingMEs>::iterator iRingME = RingMEsMap.find(ring_id);
186  if(iRingME==RingMEsMap.end()){
187  folder_organizer.setLayerFolder(detid, tTopo, det_ring_pair.second, true);
188  bookRingMEs(ibooker , detid, ring_id);
189  }
190  }
191 
192  // book sub-detector plots
193  std::pair<std::string,std::string> sdet_pair = folder_organizer.getSubDetFolderAndTag(detid, tTopo);
194  if (SubDetMEsMap.find(sdet_pair.second) == SubDetMEsMap.end()){
195  ibooker.setCurrentFolder(sdet_pair.first);
196  bookSubDetMEs(ibooker , sdet_pair.second);
197  }
198  // book module plots
199  if(Mod_On_) {
200  folder_organizer.setDetectorFolder(detid,tTopo);
201  bookModMEs(ibooker , *detid_iter);
202  }
203  }//end loop on detectors detid
204 }
TkHistoMap * tkhisto_NumOffTrack
void setSiStripFolderName(std::string name)
std::pair< const std::string, const char * > getSubDetFolderAndTag(const uint32_t &detid, const TrackerTopology *tTopo)
std::map< std::string, RingMEs > RingMEsMap
std::pair< std::string, int32_t > GetSubDetAndLayer(const uint32_t &detid, const TrackerTopology *tTopo, bool ring_flag=0)
edm::ESHandle< SiStripDetCabling > SiStripDetCabling_
void bookLayerMEs(DQMStore::IBooker &, const uint32_t, std::string &)
void setDetectorFolder(uint32_t rawdetid, const TrackerTopology *tTopo)
std::map< std::string, SubDetMEs > SubDetMEsMap
void bookSubDetMEs(DQMStore::IBooker &, std::string &name)
std::string getSubdetid(uint32_t id, const TrackerTopology *tTopo, bool flag_ring)
void bookModMEs(DQMStore::IBooker &, const uint32_t)
void setLayerFolder(uint32_t rawdetid, const TrackerTopology *tTopo, int32_t layer=0, bool ring_flag=0)
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:274
TkHistoMap * tkhisto_NumOnTrack
TkHistoMap * tkhisto_StoNCorrOnTrack
void bookRingMEs(DQMStore::IBooker &, const uint32_t, std::string &)
std::map< std::string, LayerMEs > LayerMEsMap
void SiStripMonitorTrack::bookHistograms ( DQMStore::IBooker ibooker,
edm::Run const &  run,
edm::EventSetup const &  es 
)
overridevirtual

Implements DQMEDAnalyzer.

Definition at line 79 of file SiStripMonitorTrack.cc.

References book(), edm::EventSetup::get(), and edm::ESHandle< class >::product().

80 {
81  //Retrieve tracker topology from geometry
83  es.get<IdealGeometryRecord>().get(tTopoHandle);
84  const TrackerTopology* const tTopo = tTopoHandle.product();
85  book(ibooker , tTopo);
86 }
void book(DQMStore::IBooker &, const TrackerTopology *tTopo)
T const * product() const
Definition: ESHandle.h:86
void SiStripMonitorTrack::bookLayerMEs ( DQMStore::IBooker ibooker,
const uint32_t  mod_id,
std::string &  layer_id 
)
private

Definition at line 274 of file SiStripMonitorTrack.cc.

References DQMStore::IBooker::book1D(), SiStripMonitorTrack::LayerMEs::ClusterChargeCorrOnTrack, SiStripMonitorTrack::LayerMEs::ClusterChargeOffTrack, SiStripMonitorTrack::LayerMEs::ClusterChargeOnTrack, SiStripMonitorTrack::LayerMEs::ClusterChargePerCMfromOriginOffTrack, SiStripMonitorTrack::LayerMEs::ClusterChargePerCMfromOriginOnTrack, SiStripMonitorTrack::LayerMEs::ClusterChargePerCMfromTrack, SiStripMonitorTrack::LayerMEs::ClusterNoiseOffTrack, SiStripMonitorTrack::LayerMEs::ClusterNoiseOnTrack, SiStripMonitorTrack::LayerMEs::ClusterPosOffTrack, SiStripMonitorTrack::LayerMEs::ClusterPosOnTrack, SiStripMonitorTrack::LayerMEs::ClusterStoNCorrOnTrack, SiStripMonitorTrack::LayerMEs::ClusterWidthOffTrack, SiStripMonitorTrack::LayerMEs::ClusterWidthOnTrack, SiStripHistoId::createHistoLayer(), handleBookMEs(), LayerMEsMap, mergeVDriftHistosByStation::name, SiStripDetCabling_, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by book().

275 {
276  std::string name = "layer";
277  std::string view = "layerView";
278  std::string hname;
279  std::string hpar;
280  SiStripHistoId hidmanager;
281 
282  LayerMEs theLayerMEs;
283  theLayerMEs.ClusterStoNCorrOnTrack = 0;
284  theLayerMEs.ClusterChargeCorrOnTrack = 0;
285  theLayerMEs.ClusterChargeOnTrack = 0;
286  theLayerMEs.ClusterChargeOffTrack = 0;
287  theLayerMEs.ClusterNoiseOnTrack = 0;
288  theLayerMEs.ClusterNoiseOffTrack = 0;
289  theLayerMEs.ClusterWidthOnTrack = 0;
290  theLayerMEs.ClusterWidthOffTrack = 0;
291  theLayerMEs.ClusterPosOnTrack = 0;
292  theLayerMEs.ClusterPosOffTrack = 0;
293  theLayerMEs.ClusterChargePerCMfromTrack = 0;
294  theLayerMEs.ClusterChargePerCMfromOriginOnTrack = 0;
295  theLayerMEs.ClusterChargePerCMfromOriginOffTrack = 0;
296 
297  // Signal/Noise (w/ cluster charge corrected)
298  hname = hidmanager.createHistoLayer("Summary_ClusterStoNCorr",name,layer_id,"OnTrack");
299  hpar = "TH1ClusterStoNCorr";
300  theLayerMEs.ClusterStoNCorrOnTrack = handleBookMEs(ibooker,view,layer_id,hpar,hname);
301 
302  // Cluster Charge Corrected
303  hname = hidmanager.createHistoLayer("Summary_ClusterChargeCorr",name,layer_id,"OnTrack");
304  hpar = "TH1ClusterChargeCorr";
305  theLayerMEs.ClusterChargeCorrOnTrack = handleBookMEs(ibooker,view,layer_id,hpar,hname);
306 
307  // Cluster Charge (On and Off Track)
308  hname = hidmanager.createHistoLayer("Summary_ClusterCharge",name,layer_id,"OnTrack");
309  hpar = "TH1ClusterCharge";
310  theLayerMEs.ClusterChargeOnTrack = handleBookMEs(ibooker,view,layer_id,hpar,hname);
311 
312  hname = hidmanager.createHistoLayer("Summary_ClusterCharge",name,layer_id,"OffTrack");
313  hpar = "TH1ClusterCharge";
314  theLayerMEs.ClusterChargeOffTrack = handleBookMEs(ibooker,view,layer_id,hpar,hname);
315 
316  // Cluster Noise (On and Off Track)
317  hname = hidmanager.createHistoLayer("Summary_ClusterNoise",name,layer_id,"OnTrack");
318  hpar = "TH1ClusterNoise";
319  theLayerMEs.ClusterNoiseOnTrack = handleBookMEs(ibooker,view,layer_id,hpar,hname);
320 
321  hname = hidmanager.createHistoLayer("Summary_ClusterNoise",name,layer_id,"OffTrack");
322  hpar = "TH1ClusterNoise";
323  theLayerMEs.ClusterNoiseOffTrack = handleBookMEs(ibooker,view,layer_id,hpar,hname);
324 
325  // Cluster Width (On and Off Track)
326  hname = hidmanager.createHistoLayer("Summary_ClusterWidth",name,layer_id,"OnTrack");
327  hpar = "TH1ClusterWidth";
328  theLayerMEs.ClusterWidthOnTrack = handleBookMEs(ibooker,view,layer_id,hpar,hname);
329 
330  hname = hidmanager.createHistoLayer("Summary_ClusterWidth",name,layer_id,"OffTrack");
331  hpar = "TH1ClusterWidth";
332  theLayerMEs.ClusterWidthOffTrack = handleBookMEs(ibooker,view,layer_id,hpar,hname);
333 
334  //Cluster Position
335  short total_nr_strips = SiStripDetCabling_->nApvPairs(mod_id) * 2 * 128;
336  if (layer_id.find("TEC") != std::string::npos) total_nr_strips = 3 * 2 * 128;
337 
338  hname = hidmanager.createHistoLayer("Summary_ClusterPosition",name,layer_id,"OnTrack");
339  theLayerMEs.ClusterPosOnTrack = ibooker.book1D(hname, hname, total_nr_strips, 0.5,total_nr_strips+0.5);
340 
341  hname = hidmanager.createHistoLayer("Summary_ClusterPosition",name,layer_id,"OffTrack");
342  theLayerMEs.ClusterPosOffTrack = ibooker.book1D(hname, hname, total_nr_strips, 0.5,total_nr_strips+0.5);
343 
344  // dQ/dx
345  hname = hidmanager.createHistoLayer("Summary_ClusterChargePerCMfromTrack",name,layer_id,"");
346  hpar = "TH1ClusterChargePerCM";
347  theLayerMEs.ClusterChargePerCMfromTrack = handleBookMEs(ibooker,view,layer_id,hpar,hname);
348 
349  hname = hidmanager.createHistoLayer("Summary_ClusterChargePerCMfromOrigin",name,layer_id,"OnTrack");
350  hpar = "TH1ClusterChargePerCM";
351  theLayerMEs.ClusterChargePerCMfromOriginOnTrack = handleBookMEs(ibooker,view,layer_id,hpar,hname);
352 
353  hname = hidmanager.createHistoLayer("Summary_ClusterChargePerCMfromOrigin",name,layer_id,"OffTrack");
354  hpar = "TH1ClusterChargePerCM";
355  theLayerMEs.ClusterChargePerCMfromOriginOffTrack = handleBookMEs(ibooker,view,layer_id,hpar,hname);
356 
357  //bookeeping
358  LayerMEsMap[layer_id]=theLayerMEs;
359 
360 }
edm::ESHandle< SiStripDetCabling > SiStripDetCabling_
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
MonitorElement * handleBookMEs(DQMStore::IBooker &, std::string &, std::string &, std::string &, std::string &)
std::string createHistoLayer(std::string description, std::string id_type, std::string path, std::string flag)
std::map< std::string, LayerMEs > LayerMEsMap
MonitorElement * SiStripMonitorTrack::bookME1D ( DQMStore::IBooker ibooker,
const char *  ParameterSetLabel,
const char *  HistoName 
)
private

Definition at line 519 of file SiStripMonitorTrack.cc.

References DQMStore::IBooker::book1D(), conf_, and edm::ParameterSet::getParameter().

Referenced by bookModMEs(), bookSubDetMEs(), and handleBookMEs().

520 {
521  Parameters = conf_.getParameter<edm::ParameterSet>(ParameterSetLabel);
522  return ibooker.book1D(HistoName,HistoName,
523  Parameters.getParameter<int32_t>("Nbinx"),
524  Parameters.getParameter<double>("xmin"),
525  Parameters.getParameter<double>("xmax")
526  );
527 }
T getParameter(std::string const &) const
edm::ParameterSet conf_
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
std::string HistoName
edm::ParameterSet Parameters
MonitorElement * SiStripMonitorTrack::bookME2D ( DQMStore::IBooker ibooker,
const char *  ParameterSetLabel,
const char *  HistoName 
)
private

Definition at line 530 of file SiStripMonitorTrack.cc.

References DQMStore::IBooker::book2D(), conf_, and edm::ParameterSet::getParameter().

531 {
532  Parameters = conf_.getParameter<edm::ParameterSet>(ParameterSetLabel);
533  return ibooker.book2D(HistoName,HistoName,
534  Parameters.getParameter<int32_t>("Nbinx"),
535  Parameters.getParameter<double>("xmin"),
536  Parameters.getParameter<double>("xmax"),
537  Parameters.getParameter<int32_t>("Nbiny"),
538  Parameters.getParameter<double>("ymin"),
539  Parameters.getParameter<double>("ymax")
540  );
541 }
T getParameter(std::string const &) const
edm::ParameterSet conf_
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:133
std::string HistoName
edm::ParameterSet Parameters
MonitorElement * SiStripMonitorTrack::bookME3D ( DQMStore::IBooker ibooker,
const char *  ParameterSetLabel,
const char *  HistoName 
)
private

Definition at line 544 of file SiStripMonitorTrack.cc.

References DQMStore::IBooker::book3D(), conf_, and edm::ParameterSet::getParameter().

545 {
546  Parameters = conf_.getParameter<edm::ParameterSet>(ParameterSetLabel);
547  return ibooker.book3D(HistoName,HistoName,
548  Parameters.getParameter<int32_t>("Nbinx"),
549  Parameters.getParameter<double>("xmin"),
550  Parameters.getParameter<double>("xmax"),
551  Parameters.getParameter<int32_t>("Nbiny"),
552  Parameters.getParameter<double>("ymin"),
553  Parameters.getParameter<double>("ymax"),
554  Parameters.getParameter<int32_t>("Nbinz"),
555  Parameters.getParameter<double>("zmin"),
556  Parameters.getParameter<double>("zmax")
557  );
558 }
T getParameter(std::string const &) const
edm::ParameterSet conf_
std::string HistoName
edm::ParameterSet Parameters
MonitorElement * book3D(Args &&...args)
Definition: DQMStore.h:151
MonitorElement * SiStripMonitorTrack::bookMEProfile ( DQMStore::IBooker ibooker,
const char *  ParameterSetLabel,
const char *  HistoName 
)
private

Definition at line 561 of file SiStripMonitorTrack.cc.

References DQMStore::IBooker::bookProfile(), conf_, and edm::ParameterSet::getParameter().

Referenced by bookModMEs().

562 {
563  Parameters = conf_.getParameter<edm::ParameterSet>(ParameterSetLabel);
564  return ibooker.bookProfile(HistoName,HistoName,
565  Parameters.getParameter<int32_t>("Nbinx"),
566  Parameters.getParameter<double>("xmin"),
567  Parameters.getParameter<double>("xmax"),
568  Parameters.getParameter<int32_t>("Nbiny"),
569  Parameters.getParameter<double>("ymin"),
570  Parameters.getParameter<double>("ymax"),
571  "" );
572 }
T getParameter(std::string const &) const
MonitorElement * bookProfile(Args &&...args)
Definition: DQMStore.h:157
edm::ParameterSet conf_
std::string HistoName
edm::ParameterSet Parameters
MonitorElement * SiStripMonitorTrack::bookMETrend ( DQMStore::IBooker ibooker,
const char *  HistoName 
)
private

Definition at line 575 of file SiStripMonitorTrack.cc.

References DQMStore::IBooker::bookProfile(), conf_, MonitorElement::DQM_KIND_TPROFILE, edm::ParameterSet::getParameter(), and MonitorElement::getTH1().

Referenced by bookSubDetMEs().

576 {
577  edm::ParameterSet ParametersTrend = conf_.getParameter<edm::ParameterSet>("Trending");
579  ParametersTrend.getParameter<int32_t>("Nbins"),
580  ParametersTrend.getParameter<double>("xmin"),
581  ParametersTrend.getParameter<double>("xmax"),
582  0 , 0 , "" );
583  if (me->kind() == MonitorElement::DQM_KIND_TPROFILE) me->getTH1()->SetCanExtend(TH1::kAllAxes);
584 
585  if(!me) return me;
586  me->setAxisTitle("Lumisection",1);
587  return me;
588 }
T getParameter(std::string const &) const
MonitorElement * bookProfile(Args &&...args)
Definition: DQMStore.h:157
edm::ParameterSet conf_
TH1 * getTH1(void) const
std::string HistoName
void SiStripMonitorTrack::bookModMEs ( DQMStore::IBooker ibooker,
const uint32_t  id 
)
private

Definition at line 207 of file SiStripMonitorTrack.cc.

References DQMStore::IBooker::book1D(), bookME1D(), bookMEProfile(), SiStripMonitorTrack::ModMEs::ClusterCharge, SiStripMonitorTrack::ModMEs::ClusterChargeCorr, SiStripMonitorTrack::ModMEs::ClusterChargePerCMfromOrigin, SiStripMonitorTrack::ModMEs::ClusterChargePerCMfromTrack, SiStripMonitorTrack::ModMEs::ClusterPGV, SiStripMonitorTrack::ModMEs::ClusterPos, SiStripMonitorTrack::ModMEs::ClusterStoNCorr, SiStripMonitorTrack::ModMEs::ClusterWidth, SiStripHistoId::createHistoId(), ModMEsMap, mergeVDriftHistosByStation::name, SiStripDetCabling_, AlCaHLTBitMon_QueryRunRegistry::string, and DQMStore::IBooker::tag().

Referenced by book().

208 {
209  std::string name = "det";
210  SiStripHistoId hidmanager;
211  std::string hid = hidmanager.createHistoId("",name,id);
212  std::map<std::string, ModMEs>::iterator iModME = ModMEsMap.find(hid);
213  if(iModME==ModMEsMap.end()){
214  ModMEs theModMEs;
215  theModMEs.ClusterStoNCorr = 0;
216  theModMEs.ClusterCharge = 0;
217  theModMEs.ClusterChargeCorr = 0;
218  theModMEs.ClusterWidth = 0;
219  theModMEs.ClusterPos = 0;
220  theModMEs.ClusterPGV = 0;
221  theModMEs.ClusterChargePerCMfromTrack = 0;
222  theModMEs.ClusterChargePerCMfromOrigin = 0;
223 
224  // Cluster Width
225  theModMEs.ClusterWidth=bookME1D(ibooker , "TH1ClusterWidth", hidmanager.createHistoId("ClusterWidth_OnTrack",name,id).c_str());
226  ibooker.tag(theModMEs.ClusterWidth,id);
227  // Cluster Charge
228  theModMEs.ClusterCharge=bookME1D(ibooker , "TH1ClusterCharge", hidmanager.createHistoId("ClusterCharge_OnTrack",name,id).c_str());
229  ibooker.tag(theModMEs.ClusterCharge,id);
230  // Cluster Charge Corrected
231  theModMEs.ClusterChargeCorr=bookME1D(ibooker , "TH1ClusterChargeCorr", hidmanager.createHistoId("ClusterChargeCorr_OnTrack",name,id).c_str());
232  ibooker.tag(theModMEs.ClusterChargeCorr,id);
233  // Cluster StoN Corrected
234  theModMEs.ClusterStoNCorr=bookME1D(ibooker , "TH1ClusterStoNCorrMod", hidmanager.createHistoId("ClusterStoNCorr_OnTrack",name,id).c_str());
235  ibooker.tag(theModMEs.ClusterStoNCorr,id);
236  // Cluster Position
237  short total_nr_strips = SiStripDetCabling_->nApvPairs(id) * 2 * 128;
238  theModMEs.ClusterPos=ibooker.book1D(hidmanager.createHistoId("ClusterPosition_OnTrack",name,id).c_str(),hidmanager.createHistoId("ClusterPosition_OnTrack",name,id).c_str(),total_nr_strips,0.5,total_nr_strips+0.5);
239  ibooker.tag(theModMEs.ClusterPos,id);
240  // Cluster PGV
241  theModMEs.ClusterPGV=bookMEProfile(ibooker , "TProfileClusterPGV", hidmanager.createHistoId("PGV_OnTrack",name,id).c_str());
242  ibooker.tag(theModMEs.ClusterPGV,id);
243  // Cluster Charge per cm
244  theModMEs.ClusterChargePerCMfromTrack = bookME1D(ibooker , "TH1ClusterChargePerCM", hidmanager.createHistoId("ClusterChargePerCMfromTrack",name,id).c_str());
245  ibooker.tag(theModMEs.ClusterChargePerCMfromTrack,id);
246 
247  theModMEs.ClusterChargePerCMfromOrigin = bookME1D(ibooker , "TH1ClusterChargePerCM", hidmanager.createHistoId("ClusterChargePerCMfromOrigin",name,id).c_str());
248  ibooker.tag(theModMEs.ClusterChargePerCMfromOrigin,id);
249 
250  ModMEsMap[hid]=theModMEs;
251  }
252 }
MonitorElement * bookME1D(DQMStore::IBooker &, const char *, const char *)
edm::ESHandle< SiStripDetCabling > SiStripDetCabling_
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
void tag(MonitorElement *, unsigned int)
Definition: DQMStore.cc:286
std::string createHistoId(std::string description, std::string id_type, uint32_t component_id)
std::map< std::string, ModMEs > ModMEsMap
MonitorElement * bookMEProfile(DQMStore::IBooker &, const char *, const char *)
void SiStripMonitorTrack::bookRing ( DQMStore::IBooker ,
const uint32_t  ,
std::string &   
)
private
void SiStripMonitorTrack::bookRingMEs ( DQMStore::IBooker ibooker,
const uint32_t  mod_id,
std::string &  ring_id 
)
private

Definition at line 362 of file SiStripMonitorTrack.cc.

References SiStripMonitorTrack::RingMEs::ClusterChargeCorrOnTrack, SiStripMonitorTrack::RingMEs::ClusterChargeOffTrack, SiStripMonitorTrack::RingMEs::ClusterChargeOnTrack, SiStripMonitorTrack::RingMEs::ClusterChargePerCMfromOriginOffTrack, SiStripMonitorTrack::RingMEs::ClusterChargePerCMfromOriginOnTrack, SiStripMonitorTrack::RingMEs::ClusterChargePerCMfromTrack, SiStripMonitorTrack::RingMEs::ClusterNoiseOffTrack, SiStripMonitorTrack::RingMEs::ClusterNoiseOnTrack, SiStripMonitorTrack::RingMEs::ClusterStoNCorrOnTrack, SiStripMonitorTrack::RingMEs::ClusterWidthOffTrack, SiStripMonitorTrack::RingMEs::ClusterWidthOnTrack, SiStripHistoId::createHistoLayer(), handleBookMEs(), mergeVDriftHistosByStation::name, alignCSCRings::ring_id, RingMEsMap, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by book().

363 {
364 
365  std::string name = "ring";
366  std::string view = "ringView";
367  std::string hname;
368  std::string hpar;
369  SiStripHistoId hidmanager;
370 
371  RingMEs theRingMEs;
372  theRingMEs.ClusterStoNCorrOnTrack = 0;
373  theRingMEs.ClusterChargeCorrOnTrack = 0;
374  theRingMEs.ClusterChargeOnTrack = 0;
375  theRingMEs.ClusterChargeOffTrack = 0;
376  theRingMEs.ClusterNoiseOnTrack = 0;
377  theRingMEs.ClusterNoiseOffTrack = 0;
378  theRingMEs.ClusterWidthOnTrack = 0;
379  theRingMEs.ClusterWidthOffTrack = 0;
380  theRingMEs.ClusterChargePerCMfromTrack = 0;
381  theRingMEs.ClusterChargePerCMfromOriginOnTrack = 0;
382  theRingMEs.ClusterChargePerCMfromOriginOffTrack = 0;
383 
384  hname = hidmanager.createHistoLayer("Summary_ClusterStoNCorr",name,ring_id,"OnTrack");
385  hpar = "TH1ClusterStoNCorr";
386  theRingMEs.ClusterStoNCorrOnTrack = handleBookMEs(ibooker,view,ring_id,hpar,hname);
387 
388  // Cluster Charge Corrected
389  hname = hidmanager.createHistoLayer("Summary_ClusterChargeCorr",name,ring_id,"OnTrack");
390  hpar = "TH1ClusterChargeCorr";
391  theRingMEs.ClusterChargeCorrOnTrack = handleBookMEs(ibooker,view,ring_id,hpar,hname);
392 
393  // Cluster Charge (On and Off Track)
394  hname = hidmanager.createHistoLayer("Summary_ClusterCharge",name,ring_id,"OnTrack");
395  hpar = "TH1ClusterCharge";
396  theRingMEs.ClusterChargeOnTrack = handleBookMEs(ibooker,view,ring_id,hpar,hname);
397 
398  hname = hidmanager.createHistoLayer("Summary_ClusterCharge",name,ring_id,"OffTrack");
399  hpar = "TH1ClusterCharge";
400  theRingMEs.ClusterChargeOffTrack = handleBookMEs(ibooker,view,ring_id,hpar,hname);
401 
402  // Cluster Noise (On and Off Track)
403  hname = hidmanager.createHistoLayer("Summary_ClusterNoise",name,ring_id,"OnTrack");
404  hpar = "TH1ClusterNoise";
405  theRingMEs.ClusterNoiseOnTrack = handleBookMEs(ibooker,view,ring_id,hpar,hname);
406 
407  hname = hidmanager.createHistoLayer("Summary_ClusterNoise",name,ring_id,"OffTrack");
408  hpar = "TH1ClusterNoise";
409  theRingMEs.ClusterNoiseOffTrack = handleBookMEs(ibooker,view,ring_id,hpar,hname);
410 
411  // Cluster Width (On and Off Track)
412  hname = hidmanager.createHistoLayer("Summary_ClusterWidth",name,ring_id,"OnTrack");
413  hpar = "TH1ClusterWidth";
414  theRingMEs.ClusterWidthOnTrack = handleBookMEs(ibooker,view,ring_id,hpar,hname);
415 
416  hname = hidmanager.createHistoLayer("Summary_ClusterWidth",name,ring_id,"OffTrack");
417  hpar = "TH1ClusterWidth";
418  theRingMEs.ClusterWidthOffTrack = handleBookMEs(ibooker,view,ring_id,hpar,hname);
419 
420  // dQ/dx
421  hname = hidmanager.createHistoLayer("Summary_ClusterChargePerCMfromTrack",name,ring_id,"");
422  hpar = "TH1ClusterChargePerCM";
423  theRingMEs.ClusterChargePerCMfromTrack = handleBookMEs(ibooker,view,ring_id,hpar,hname);
424 
425  hname = hidmanager.createHistoLayer("Summary_ClusterChargePerCMfromOrigin",name,ring_id,"OnTrack");
426  hpar = "TH1ClusterChargePerCM";
427  theRingMEs.ClusterChargePerCMfromOriginOnTrack = handleBookMEs(ibooker,view,ring_id,hpar,hname);
428 
429  hname = hidmanager.createHistoLayer("Summary_ClusterChargePerCMfromOrigin",name,ring_id,"OffTrack");
430  hpar = "TH1ClusterChargePerCM";
431  theRingMEs.ClusterChargePerCMfromOriginOffTrack = handleBookMEs(ibooker,view,ring_id,hpar,hname);
432 
433  //bookeeping
434  RingMEsMap[ring_id]=theRingMEs;
435 
436 }
std::map< std::string, RingMEs > RingMEsMap
MonitorElement * handleBookMEs(DQMStore::IBooker &, std::string &, std::string &, std::string &, std::string &)
std::string createHistoLayer(std::string description, std::string id_type, std::string path, std::string flag)
void SiStripMonitorTrack::bookSubDetMEs ( DQMStore::IBooker ibooker,
std::string &  name 
)
private

Definition at line 441 of file SiStripMonitorTrack.cc.

References bookME1D(), bookMETrend(), SiStripMonitorTrack::SubDetMEs::ClusterChargeOffTrack, SiStripMonitorTrack::SubDetMEs::ClusterChargeOnTrack, SiStripMonitorTrack::SubDetMEs::ClusterChargePerCMfromOriginOffTrack, SiStripMonitorTrack::SubDetMEs::ClusterChargePerCMfromOriginOnTrack, SiStripMonitorTrack::SubDetMEs::ClusterChargePerCMfromTrack, SiStripMonitorTrack::SubDetMEs::ClusterStoNCorrOnTrack, SiStripMonitorTrack::SubDetMEs::ClusterStoNOffTrack, MonitorElement::getTH1(), mergeVDriftHistosByStation::name, SiStripMonitorTrack::SubDetMEs::nClustersOffTrack, SiStripMonitorTrack::SubDetMEs::nClustersOnTrack, SiStripMonitorTrack::SubDetMEs::nClustersTrendOffTrack, SiStripMonitorTrack::SubDetMEs::nClustersTrendOnTrack, MonitorElement::setAxisTitle(), AlCaHLTBitMon_QueryRunRegistry::string, xuti::subdet_tag(), SubDetMEsMap, SiStripMonitorTrack::SubDetMEs::totNClustersOffTrack, SiStripMonitorTrack::SubDetMEs::totNClustersOnTrack, and Trend_On_.

Referenced by book().

441  {
442 
444  subdet_tag = "__" + name;
445  std::string completeName;
446  std::string axisName;
447 
448  SubDetMEs theSubDetMEs;
449  theSubDetMEs.totNClustersOnTrack = 0;
450  theSubDetMEs.totNClustersOffTrack = 0;
451  theSubDetMEs.nClustersOnTrack = 0;
452  theSubDetMEs.nClustersTrendOnTrack = 0;
453  theSubDetMEs.nClustersOffTrack = 0;
454  theSubDetMEs.nClustersTrendOffTrack = 0;
455  theSubDetMEs.ClusterStoNCorrOnTrack = 0;
456  theSubDetMEs.ClusterChargeOnTrack = 0;
457  theSubDetMEs.ClusterChargeOffTrack = 0;
458  theSubDetMEs.ClusterStoNOffTrack = 0;
459  theSubDetMEs.ClusterChargePerCMfromTrack = 0;
460  theSubDetMEs.ClusterChargePerCMfromOriginOnTrack = 0;
461  theSubDetMEs.ClusterChargePerCMfromOriginOffTrack = 0;
462 
463  // TotalNumber of Cluster OnTrack
464  completeName = "Summary_TotalNumberOfClusters_OnTrack" + subdet_tag;
465  axisName = "Number of on-track clusters in " + name;
466  theSubDetMEs.nClustersOnTrack = bookME1D(ibooker , "TH1nClustersOn", completeName.c_str());
467  theSubDetMEs.nClustersOnTrack->setAxisTitle(axisName.c_str());
468  theSubDetMEs.nClustersOnTrack->getTH1()->StatOverflows(kTRUE);
469 
470  // TotalNumber of Cluster OffTrack
471  completeName = "Summary_TotalNumberOfClusters_OffTrack" + subdet_tag;
472  axisName = "Number of off-track clusters in " + name;
473  theSubDetMEs.nClustersOffTrack = bookME1D(ibooker , "TH1nClustersOff", completeName.c_str());
474  theSubDetMEs.nClustersOffTrack->setAxisTitle(axisName.c_str());
475  theSubDetMEs.nClustersOffTrack->getTH1()->StatOverflows(kTRUE);
476 
477  // Cluster StoN On Track
478  completeName = "Summary_ClusterStoNCorr_OnTrack" + subdet_tag;
479  theSubDetMEs.ClusterStoNCorrOnTrack = bookME1D(ibooker , "TH1ClusterStoNCorr", completeName.c_str());
480 
481  // Cluster Charge On Track
482  completeName = "Summary_ClusterCharge_OnTrack" + subdet_tag;
483  theSubDetMEs.ClusterChargeOnTrack=bookME1D(ibooker , "TH1ClusterCharge", completeName.c_str());
484 
485  // Cluster Charge Off Track
486  completeName = "Summary_ClusterCharge_OffTrack" + subdet_tag;
487  theSubDetMEs.ClusterChargeOffTrack=bookME1D(ibooker , "TH1ClusterCharge", completeName.c_str());
488 
489  // Cluster Charge StoN Off Track
490  completeName = "Summary_ClusterStoN_OffTrack" + subdet_tag;
491  theSubDetMEs.ClusterStoNOffTrack = bookME1D(ibooker , "TH1ClusterStoN", completeName.c_str());
492 
493  // cluster charge per cm on track
494  completeName = "Summary_ClusterChargePerCMfromTrack" + subdet_tag;
495  theSubDetMEs.ClusterChargePerCMfromTrack=bookME1D(ibooker , "TH1ClusterChargePerCM", completeName.c_str());
496 
497  // cluster charge per cm on track
498  completeName = "Summary_ClusterChargePerCMfromOrigin_OnTrack" + subdet_tag;
499  theSubDetMEs.ClusterChargePerCMfromOriginOnTrack=bookME1D(ibooker , "TH1ClusterChargePerCM", completeName.c_str());
500 
501  // cluster charge per cm off track
502  completeName = "Summary_ClusterChargePerCMfromOrigin_OffTrack" + subdet_tag;
503  theSubDetMEs.ClusterChargePerCMfromOriginOffTrack=bookME1D(ibooker , "TH1ClusterChargePerCM", completeName.c_str());
504 
505  if(Trend_On_){
506  // TotalNumber of Cluster
507  completeName = "Trend_TotalNumberOfClusters_OnTrack" + subdet_tag;
508  theSubDetMEs.nClustersTrendOnTrack = bookMETrend(ibooker , completeName.c_str());
509  completeName = "Trend_TotalNumberOfClusters_OffTrack" + subdet_tag;
510  theSubDetMEs.nClustersTrendOffTrack = bookMETrend(ibooker , completeName.c_str());
511  }
512 
513  //bookeeping
514  SubDetMEsMap[name]=theSubDetMEs;
515 
516 }
MonitorElement * bookME1D(DQMStore::IBooker &, const char *, const char *)
std::map< std::string, SubDetMEs > SubDetMEsMap
const std::string subdet_tag("SubDet")
MonitorElement * bookMETrend(DQMStore::IBooker &, const char *)
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
bool SiStripMonitorTrack::clusterInfos ( SiStripClusterInfo cluster,
const uint32_t  detid,
enum ClusterFlags  flags,
LocalVector  LV,
const Det2MEs MEs 
)
private

Definition at line 969 of file SiStripMonitorTrack.cc.

References TkHistoMap::add(), applyClusterQuality_, SiStripClusterInfo::charge(), SiStripHistoId::createHistoId(), SiStripClusterInfo::detId(), eventNb, TkHistoMap::fill(), fillMEs(), fillModMEs(), SiStripMonitorTrack::Det2MEs::iSubdet, LogDebug, PV3DBase< T, PVType, FrameType >::mag(), Mod_On_, mergeVDriftHistosByStation::name, HLT_25ns14e33_v1_cff::noise, SiStripClusterInfo::noiseRescaledByGain(), NULL, OffTrack, OnTrack, SiStripClusterInfo::signalOverNoise(), sToNLowerLimit_, sToNUpperLimit_, AlCaHLTBitMon_QueryRunRegistry::string, tkhisto_NumOffTrack, tkhisto_NumOnTrack, tkhisto_StoNCorrOnTrack, TkHistoMap_On_, SiStripMonitorTrack::SubDetMEs::totNClustersOffTrack, SiStripMonitorTrack::SubDetMEs::totNClustersOnTrack, SiStripClusterInfo::width(), widthLowerLimit_, widthUpperLimit_, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by AllClusters(), and RecHitInfo().

970 {
971 
972  if (cluster==NULL) return false;
973  // if one imposes a cut on the clusters, apply it
974  if( (applyClusterQuality_) &&
975  (cluster->signalOverNoise() < sToNLowerLimit_ ||
976  cluster->signalOverNoise() > sToNUpperLimit_ ||
977  cluster->width() < widthLowerLimit_ ||
978  cluster->width() > widthUpperLimit_) ) return false;
979  // start of the analysis
980 
981  if (MEs.iSubdet != nullptr) {
982  if (flag == OnTrack) MEs.iSubdet->totNClustersOnTrack++;
983  else if (flag == OffTrack) MEs.iSubdet->totNClustersOffTrack++;
984  }
985 
986  float cosRZ = -2;
987  LogDebug("SiStripMonitorTrack")<< "\n\tLV " << LV.x() << " " << LV.y() << " " << LV.z() << " " << LV.mag() << std::endl;
988  if (LV.mag()!=0){
989  cosRZ= fabs(LV.z())/LV.mag();
990  LogDebug("SiStripMonitorTrack")<< "\n\t cosRZ " << cosRZ << std::endl;
991  }
993 
994  // Filling SubDet/Layer Plots (on Track + off Track)
995  fillMEs(cluster,detid,cosRZ,flag,LV,MEs);
996 
997  //******** TkHistoMaps
998  if (TkHistoMap_On_) {
999  uint32_t adet=cluster->detId();
1000  float noise = cluster->noiseRescaledByGain();
1001  if(flag==OnTrack){
1002  tkhisto_NumOnTrack->add(adet,1.);
1003  if(noise > 0.0) tkhisto_StoNCorrOnTrack->fill(adet,cluster->signalOverNoise()*cosRZ);
1004  if(noise == 0.0)
1005  LogDebug("SiStripMonitorTrack") << "Module " << detid << " in Event " << eventNb << " noise " << noise << std::endl;
1006  }
1007  else if(flag==OffTrack){
1008  tkhisto_NumOffTrack->add(adet,1.);
1009  if(cluster->charge() > 250){
1010  LogDebug("SiStripMonitorTrack") << "Module firing " << detid << " in Event " << eventNb << std::endl;
1011  }
1012  }
1013  }
1014 
1015  // Module plots filled only for onTrack Clusters
1016  if(Mod_On_){
1017  if(flag==OnTrack){
1018  SiStripHistoId hidmanager2;
1019  name =hidmanager2.createHistoId("","det",detid);
1020  fillModMEs(cluster,name,cosRZ,detid,LV);
1021  }
1022  }
1023  return true;
1024 }
#define LogDebug(id)
void fillMEs(SiStripClusterInfo *, const uint32_t detid, float, enum ClusterFlags, const LocalVector LV, const Det2MEs &MEs)
TkHistoMap * tkhisto_NumOffTrack
float noiseRescaledByGain() const
T y() const
Definition: PV3DBase.h:63
#define NULL
Definition: scimark2.h:8
float signalOverNoise() const
T mag() const
Definition: PV3DBase.h:67
edm::EventNumber_t eventNb
uint16_t charge() const
void fill(uint32_t &detid, float value)
Definition: TkHistoMap.cc:180
T z() const
Definition: PV3DBase.h:64
uint16_t width() const
std::string createHistoId(std::string description, std::string id_type, uint32_t component_id)
TkHistoMap * tkhisto_NumOnTrack
uint32_t detId() const
TkHistoMap * tkhisto_StoNCorrOnTrack
void fillModMEs(SiStripClusterInfo *cluster, std::string name, float cos, const uint32_t detid, const LocalVector LV)
T x() const
Definition: PV3DBase.h:62
void add(uint32_t &detid, float value)
Definition: TkHistoMap.cc:213
void SiStripMonitorTrack::dqmBeginRun ( const edm::Run run,
const edm::EventSetup es 
)
virtual

Reimplemented from DQMEDAnalyzer.

Definition at line 66 of file SiStripMonitorTrack.cc.

References genTriggerEventFlag_, edm::EventSetup::get(), GenericTriggerEventFlag::initRun(), LogDebug, GenericTriggerEventFlag::on(), SiStripDetCabling_, and tkgeom_.

67 {
68  //get geom
70  LogDebug("SiStripMonitorTrack") << "[SiStripMonitorTrack::beginRun] There are "<<tkgeom_->detUnits().size() <<" detectors instantiated in the geometry" << std::endl;
72 
73 
74  // Initialize the GenericTriggerEventFlag
76 }
#define LogDebug(id)
edm::ESHandle< SiStripDetCabling > SiStripDetCabling_
edm::ESHandle< TrackerGeometry > tkgeom_
const T & get() const
Definition: EventSetup.h:55
GenericTriggerEventFlag * genTriggerEventFlag_
void initRun(const edm::Run &run, const edm::EventSetup &setup)
To be called from beginRun() methods.
void SiStripMonitorTrack::fillME ( MonitorElement ME,
float  value1 
)
inlineprivate

Definition at line 112 of file SiStripMonitorTrack.h.

References MonitorElement::Fill().

Referenced by analyze(), fillMEs(), and fillModMEs().

112 {if (ME!=0)ME->Fill(value1);}
void Fill(long long x)
void SiStripMonitorTrack::fillME ( MonitorElement ME,
float  value1,
float  value2 
)
inlineprivate

Definition at line 113 of file SiStripMonitorTrack.h.

References MonitorElement::Fill().

113 {if (ME!=0)ME->Fill(value1,value2);}
void Fill(long long x)
void SiStripMonitorTrack::fillME ( MonitorElement ME,
float  value1,
float  value2,
float  value3 
)
inlineprivate

Definition at line 114 of file SiStripMonitorTrack.h.

References MonitorElement::Fill().

114 {if (ME!=0)ME->Fill(value1,value2,value3);}
void Fill(long long x)
void SiStripMonitorTrack::fillME ( MonitorElement ME,
float  value1,
float  value2,
float  value3,
float  value4 
)
inlineprivate

Definition at line 115 of file SiStripMonitorTrack.h.

References MonitorElement::Fill().

115 {if (ME!=0)ME->Fill(value1,value2,value3,value4);}
void Fill(long long x)
void SiStripMonitorTrack::fillMEs ( SiStripClusterInfo cluster,
const uint32_t  detid,
float  cos,
enum ClusterFlags  flag,
const LocalVector  LV,
const Det2MEs MEs 
)
private

Definition at line 1075 of file SiStripMonitorTrack.cc.

References SiStripClusterInfo::baryStrip(), RecoTauCleanerPlugins::charge, SiStripClusterInfo::charge(), siStripClusterTools::chargePerCM(), SiStripMonitorTrack::LayerMEs::ClusterChargeCorrOnTrack, SiStripMonitorTrack::RingMEs::ClusterChargeCorrOnTrack, SiStripMonitorTrack::LayerMEs::ClusterChargeOffTrack, SiStripMonitorTrack::RingMEs::ClusterChargeOffTrack, SiStripMonitorTrack::SubDetMEs::ClusterChargeOffTrack, SiStripMonitorTrack::LayerMEs::ClusterChargeOnTrack, SiStripMonitorTrack::RingMEs::ClusterChargeOnTrack, SiStripMonitorTrack::SubDetMEs::ClusterChargeOnTrack, SiStripMonitorTrack::LayerMEs::ClusterChargePerCMfromOriginOffTrack, SiStripMonitorTrack::RingMEs::ClusterChargePerCMfromOriginOffTrack, SiStripMonitorTrack::SubDetMEs::ClusterChargePerCMfromOriginOffTrack, SiStripMonitorTrack::LayerMEs::ClusterChargePerCMfromOriginOnTrack, SiStripMonitorTrack::RingMEs::ClusterChargePerCMfromOriginOnTrack, SiStripMonitorTrack::SubDetMEs::ClusterChargePerCMfromOriginOnTrack, SiStripMonitorTrack::LayerMEs::ClusterChargePerCMfromTrack, SiStripMonitorTrack::RingMEs::ClusterChargePerCMfromTrack, SiStripMonitorTrack::SubDetMEs::ClusterChargePerCMfromTrack, SiStripMonitorTrack::LayerMEs::ClusterNoiseOffTrack, SiStripMonitorTrack::RingMEs::ClusterNoiseOffTrack, SiStripMonitorTrack::LayerMEs::ClusterNoiseOnTrack, SiStripMonitorTrack::RingMEs::ClusterNoiseOnTrack, SiStripMonitorTrack::LayerMEs::ClusterPosOffTrack, SiStripMonitorTrack::LayerMEs::ClusterPosOnTrack, SiStripMonitorTrack::LayerMEs::ClusterStoNCorrOnTrack, SiStripMonitorTrack::RingMEs::ClusterStoNCorrOnTrack, SiStripMonitorTrack::SubDetMEs::ClusterStoNCorrOnTrack, SiStripMonitorTrack::SubDetMEs::ClusterStoNOffTrack, SiStripMonitorTrack::LayerMEs::ClusterWidthOffTrack, SiStripMonitorTrack::RingMEs::ClusterWidthOffTrack, SiStripMonitorTrack::LayerMEs::ClusterWidthOnTrack, SiStripMonitorTrack::RingMEs::ClusterWidthOnTrack, eventNb, fillME(), SiStripMonitorTrack::Det2MEs::iLayer, SiStripMonitorTrack::Det2MEs::iRing, SiStripMonitorTrack::Det2MEs::iSubdet, LogDebug, HLT_25ns14e33_v1_cff::noise, SiStripClusterInfo::noiseRescaledByGain(), OnTrack, position, SiStripClusterInfo::signalOverNoise(), tkgeom_, GeomDet::toLocal(), SiStripClusterInfo::width(), create_public_lumi_plots::width, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by clusterInfos().

1076 {
1077  float StoN = cluster->signalOverNoise();
1078  float noise = cluster->noiseRescaledByGain();
1079  uint16_t charge = cluster->charge();
1080  uint16_t width = cluster->width();
1081  float position = cluster->baryStrip();
1082 
1083  // new dE/dx (chargePerCM)
1084  // https://indico.cern.ch/event/342236/session/5/contribution/10/material/slides/0.pdf
1085  float dQdx_fromTrack = siStripClusterTools::chargePerCM(detid, *cluster, LV);
1086  // from straigth line origin-sensor centre
1087  const StripGeomDetUnit* DetUnit = (const StripGeomDetUnit*) tkgeom_->idToDetUnit(DetId(detid));
1088  LocalPoint locVtx = DetUnit->toLocal(GlobalPoint(0.0, 0.0, 0.0));
1089  LocalVector locDir(locVtx.x(), locVtx.y(), locVtx.z());
1090  float dQdx_fromOrigin = siStripClusterTools::chargePerCM(detid, *cluster, locDir);
1091 
1092  // layerMEs
1093  if (MEs.iLayer != nullptr) {
1094  if(flag==OnTrack){
1095  if(noise > 0.0) fillME(MEs.iLayer->ClusterStoNCorrOnTrack, StoN*cos);
1096  if(noise == 0.0) LogDebug("SiStripMonitorTrack") << "Module " << detid << " in Event " << eventNb << " noise " << cluster->noiseRescaledByGain() << std::endl;
1097  fillME(MEs.iLayer->ClusterChargeCorrOnTrack, charge*cos);
1098  fillME(MEs.iLayer->ClusterChargeOnTrack, charge);
1099  fillME(MEs.iLayer->ClusterNoiseOnTrack, noise);
1100  fillME(MEs.iLayer->ClusterWidthOnTrack, width);
1101  fillME(MEs.iLayer->ClusterPosOnTrack, position);
1102  fillME(MEs.iLayer->ClusterChargePerCMfromTrack, dQdx_fromTrack);
1103  fillME(MEs.iLayer->ClusterChargePerCMfromOriginOnTrack, dQdx_fromOrigin);
1104  } else {
1105  fillME(MEs.iLayer->ClusterChargeOffTrack, charge);
1106  fillME(MEs.iLayer->ClusterNoiseOffTrack, noise);
1107  fillME(MEs.iLayer->ClusterWidthOffTrack, width);
1108  fillME(MEs.iLayer->ClusterPosOffTrack, position);
1109  fillME(MEs.iLayer->ClusterChargePerCMfromOriginOffTrack, dQdx_fromOrigin);
1110  }
1111  }
1112 
1113  // ringMEs
1114  if (MEs.iRing != nullptr) {
1115  if(flag==OnTrack){
1116  if(noise > 0.0) fillME(MEs.iRing->ClusterStoNCorrOnTrack, StoN*cos);
1117  if(noise == 0.0) LogDebug("SiStripMonitorTrack") << "Module " << detid << " in Event " << eventNb << " noise " << cluster->noiseRescaledByGain() << std::endl;
1118  fillME(MEs.iRing->ClusterChargeCorrOnTrack, charge*cos);
1119  fillME(MEs.iRing->ClusterChargeOnTrack, charge);
1120  fillME(MEs.iRing->ClusterNoiseOnTrack, noise);
1121  fillME(MEs.iRing->ClusterWidthOnTrack, width);
1122  fillME(MEs.iRing->ClusterChargePerCMfromTrack, dQdx_fromTrack);
1123  fillME(MEs.iRing->ClusterChargePerCMfromOriginOnTrack, dQdx_fromOrigin);
1124  } else {
1125  fillME(MEs.iRing->ClusterChargeOffTrack, charge);
1126  fillME(MEs.iRing->ClusterNoiseOffTrack, noise);
1127  fillME(MEs.iRing->ClusterWidthOffTrack, width);
1128  fillME(MEs.iRing->ClusterChargePerCMfromOriginOffTrack, dQdx_fromOrigin);
1129  }
1130  }
1131  // subdetMEs
1132  if(MEs.iSubdet != nullptr){
1133  if(flag==OnTrack){
1134  fillME(MEs.iSubdet->ClusterChargeOnTrack,charge);
1135  if(noise > 0.0) fillME(MEs.iSubdet->ClusterStoNCorrOnTrack,StoN*cos);
1136  fillME(MEs.iSubdet->ClusterChargePerCMfromTrack,dQdx_fromTrack);
1137  fillME(MEs.iSubdet->ClusterChargePerCMfromOriginOnTrack,dQdx_fromOrigin);
1138  } else {
1139  fillME(MEs.iSubdet->ClusterChargeOffTrack,charge);
1140  if(noise > 0.0) fillME(MEs.iSubdet->ClusterStoNOffTrack,StoN);
1141  fillME(MEs.iSubdet->ClusterChargePerCMfromOriginOffTrack,dQdx_fromOrigin);
1142  }
1143  }
1144 }
#define LogDebug(id)
void fillME(MonitorElement *ME, float value1)
float noiseRescaledByGain() const
float chargePerCM(DetId detid, Iter a, Iter b)
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
float baryStrip() const
T y() const
Definition: PV3DBase.h:63
LocalPoint toLocal(const GlobalPoint &gp) const
Conversion to the R.F. of the GeomDet.
Definition: GeomDet.h:67
edm::ESHandle< TrackerGeometry > tkgeom_
float signalOverNoise() const
edm::EventNumber_t eventNb
uint16_t charge() const
T z() const
Definition: PV3DBase.h:64
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
uint16_t width() const
Definition: DetId.h:18
static int position[264][3]
Definition: ReadPGInfo.cc:509
T x() const
Definition: PV3DBase.h:62
void SiStripMonitorTrack::fillModMEs ( SiStripClusterInfo cluster,
std::string  name,
float  cos,
const uint32_t  detid,
const LocalVector  LV 
)
private

Definition at line 1027 of file SiStripMonitorTrack.cc.

References SiStripClusterInfo::baryStrip(), RecoTauCleanerPlugins::charge, SiStripClusterInfo::charge(), siStripClusterTools::chargePerCM(), conf_, eventNb, fillME(), edm::ParameterSet::getParameter(), i, LogDebug, SiStripClusterInfo::maxCharge(), SiStripClusterInfo::maxIndex(), ModMEsMap, HLT_25ns14e33_v1_cff::noise, SiStripClusterInfo::noiseRescaledByGain(), position, SiStripClusterInfo::signalOverNoise(), SiStripClusterInfo::stripCharges(), tkgeom_, GeomDet::toLocal(), SiStripClusterInfo::width(), create_public_lumi_plots::width, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by clusterInfos().

1028 {
1029  std::map<std::string, ModMEs>::iterator iModME = ModMEsMap.find(name);
1030  if(iModME!=ModMEsMap.end()){
1031 
1032  float StoN = cluster->signalOverNoise();
1033  uint16_t charge = cluster->charge();
1034  uint16_t width = cluster->width();
1035  float position = cluster->baryStrip();
1036 
1037  // new dE/dx (chargePerCM)
1038  // https://indico.cern.ch/event/342236/session/5/contribution/10/material/slides/0.pdf
1039  float dQdx_fromTrack = siStripClusterTools::chargePerCM(detid, *cluster, LV);
1040  // from straigth line origin-sensor centre
1041  const StripGeomDetUnit* DetUnit = (const StripGeomDetUnit*) tkgeom_->idToDetUnit(DetId(detid));
1042  LocalPoint locVtx = DetUnit->toLocal(GlobalPoint(0.0, 0.0, 0.0));
1043  LocalVector locDir(locVtx.x(), locVtx.y(), locVtx.z());
1044  float dQdx_fromOrigin = siStripClusterTools::chargePerCM(detid, *cluster, locDir);
1045 
1046  float noise = cluster->noiseRescaledByGain();
1047  if(noise > 0.0) fillME(iModME->second.ClusterStoNCorr ,StoN*cos);
1048  if(noise == 0.0) LogDebug("SiStripMonitorTrack") << "Module " << name << " in Event " << eventNb << " noise " << noise << std::endl;
1049  fillME(iModME->second.ClusterCharge,charge);
1050 
1051  fillME(iModME->second.ClusterChargeCorr,charge*cos);
1052 
1053  fillME(iModME->second.ClusterWidth ,width);
1054  fillME(iModME->second.ClusterPos ,position);
1055 
1056  fillME(iModME->second.ClusterChargePerCMfromTrack, dQdx_fromTrack);
1057  fillME(iModME->second.ClusterChargePerCMfromOrigin, dQdx_fromOrigin);
1058 
1059  //fill the PGV histo
1060  float PGVmax = cluster->maxCharge();
1061  int PGVposCounter = cluster->maxIndex();
1062  for (int i= int(conf_.getParameter<edm::ParameterSet>("TProfileClusterPGV").getParameter<double>("xmin"));i<PGVposCounter;++i)
1063  fillME(iModME->second.ClusterPGV, i,0.);
1064  for (auto it=cluster->stripCharges().begin();it<cluster->stripCharges().end();++it) {
1065  fillME(iModME->second.ClusterPGV, PGVposCounter++,(*it)/PGVmax);
1066  }
1067  for (int i= PGVposCounter;i<int(conf_.getParameter<edm::ParameterSet>("TProfileClusterPGV").getParameter<double>("xmax"));++i)
1068  fillME(iModME->second.ClusterPGV, i,0.);
1069  //end fill the PGV histo
1070  }
1071 }
#define LogDebug(id)
uint8_t maxCharge() const
T getParameter(std::string const &) const
int i
Definition: DBlmapReader.cc:9
void fillME(MonitorElement *ME, float value1)
float noiseRescaledByGain() const
float chargePerCM(DetId detid, Iter a, Iter b)
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
float baryStrip() const
edm::ParameterSet conf_
T y() const
Definition: PV3DBase.h:63
LocalPoint toLocal(const GlobalPoint &gp) const
Conversion to the R.F. of the GeomDet.
Definition: GeomDet.h:67
uint16_t maxIndex() const
auto stripCharges() const -> decltype(cluster() ->amplitudes())
edm::ESHandle< TrackerGeometry > tkgeom_
float signalOverNoise() const
edm::EventNumber_t eventNb
uint16_t charge() const
T z() const
Definition: PV3DBase.h:64
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
uint16_t width() const
Definition: DetId.h:18
std::map< std::string, ModMEs > ModMEsMap
static int position[264][3]
Definition: ReadPGInfo.cc:509
T x() const
Definition: PV3DBase.h:62
SiStripMonitorTrack::Det2MEs SiStripMonitorTrack::findMEs ( const TrackerTopology tTopo,
const uint32_t  detid 
)
private

Definition at line 938 of file SiStripMonitorTrack.cc.

References folderOrganizer_, SiStripFolderOrganizer::getSubDetFolderAndTag(), SiStripHistoId::getSubdetid(), SiStripMonitorTrack::Det2MEs::iLayer, SiStripMonitorTrack::Det2MEs::iRing, SiStripMonitorTrack::Det2MEs::iSubdet, LayerMEsMap, alignCSCRings::ring_id, RingMEsMap, AlCaHLTBitMon_QueryRunRegistry::string, and SubDetMEsMap.

Referenced by AllClusters(), and RecHitInfo().

938  {
939  SiStripHistoId hidmanager1;
940 
941  std::string layer_id = hidmanager1.getSubdetid(detid, tTopo, false);
942  std::string ring_id = hidmanager1.getSubdetid(detid, tTopo, true);
943  std::string sdet_tag = folderOrganizer_.getSubDetFolderAndTag(detid, tTopo).second;
944 
945  Det2MEs me;
946  me.iLayer = nullptr;
947  me.iRing = nullptr;
948  me.iSubdet = nullptr;
949 
950  std::map<std::string, LayerMEs>::iterator iLayer = LayerMEsMap.find(layer_id);
951  if (iLayer != LayerMEsMap.end()) {
952  me.iLayer = &(iLayer->second);
953  }
954 
955  std::map<std::string, RingMEs>::iterator iRing = RingMEsMap.find(ring_id);
956  if (iRing != RingMEsMap.end()) {
957  me.iRing = &(iRing->second);
958  }
959 
960  std::map<std::string, SubDetMEs>::iterator iSubdet = SubDetMEsMap.find(sdet_tag);
961  if (iSubdet != SubDetMEsMap.end()) {
962  me.iSubdet = &(iSubdet->second);
963  }
964 
965  return me;
966 }
std::pair< const std::string, const char * > getSubDetFolderAndTag(const uint32_t &detid, const TrackerTopology *tTopo)
std::map< std::string, RingMEs > RingMEsMap
std::map< std::string, SubDetMEs > SubDetMEsMap
SiStripFolderOrganizer folderOrganizer_
std::string getSubdetid(uint32_t id, const TrackerTopology *tTopo, bool flag_ring)
std::map< std::string, LayerMEs > LayerMEsMap
MonitorElement * SiStripMonitorTrack::handleBookMEs ( DQMStore::IBooker ibooker,
std::string &  viewParameter,
std::string &  id,
std::string &  histoParameters,
std::string &  histoName 
)
private

Definition at line 254 of file SiStripMonitorTrack.cc.

References bookME1D(), conf_, spr::find(), edm::ParameterSet::getParameter(), and NULL.

Referenced by bookLayerMEs(), and bookRingMEs().

254  {
255 
256  MonitorElement* me = NULL;
257  bool view = false;
258  view = (conf_.getParameter<edm::ParameterSet>(histoParameters.c_str())).getParameter<bool>(viewParameter.c_str());
259  if ( id.find("TEC") == std::string::npos && id.find("TID") == std::string::npos ) {
260  me = bookME1D(ibooker , histoParameters.c_str(), histoName.c_str());
261  } else {
262  if (view) {
263  // histoName = histoName + "__" + thickness;
264  me = bookME1D(ibooker , histoParameters.c_str(), histoName.c_str());
265  }
266  }
267  return me;
268 }
T getParameter(std::string const &) const
edm::ParameterSet conf_
MonitorElement * bookME1D(DQMStore::IBooker &, const char *, const char *)
#define NULL
Definition: scimark2.h:8
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
void SiStripMonitorTrack::hitStudy ( const edm::EventSetup es,
const ProjectedSiStripRecHit2D projhit,
const SiStripMatchedRecHit2D matchedhit,
const SiStripRecHit2D hit2D,
const SiStripRecHit1D hit1D,
LocalVector  localMomentum 
)
private

Definition at line 670 of file SiStripMonitorTrack.cc.

References TrackingRecHit::geographicalId(), LogDebug, LogTrace, visualization-live-secondInstance_cfg::m, PV3DBase< T, PVType, FrameType >::mag(), GluedGeomDet::monoDet(), SiStripMatchedRecHit2D::monoHit(), ProjectedSiStripRecHit2D::originalHit(), DetId::rawId(), alignCSCRings::s, GluedGeomDet::stereoDet(), SiStripMatchedRecHit2D::stereoHit(), tkgeom_, GeomDet::toGlobal(), GeomDet::toLocal(), PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by trackStudyFromTrack().

676  {
677  LocalVector statedirection;
678  if(matchedhit){ // type=Matched;
679  LogTrace("SiStripMonitorTrack")<<"\nMatched recHit found"<< std::endl;
680 
681  GluedGeomDet * gdet=(GluedGeomDet *)tkgeom_->idToDet(matchedhit->geographicalId());
682 
683  GlobalVector gtrkdirup=gdet->toGlobal(localMomentum);
684 
685  //mono side
686  const GeomDetUnit * monodet=gdet->monoDet();
687  statedirection=monodet->toLocal(gtrkdirup);
688  SiStripRecHit2D m = matchedhit->monoHit();
689  if(statedirection.mag() != 0) RecHitInfo<SiStripRecHit2D>(&m,statedirection,es);
690 
691  //stereo side
692  const GeomDetUnit * stereodet=gdet->stereoDet();
693  statedirection=stereodet->toLocal(gtrkdirup);
694  SiStripRecHit2D s = matchedhit->stereoHit();
695  if(statedirection.mag() != 0) RecHitInfo<SiStripRecHit2D>(&s,statedirection,es);
696  }
697  else if(projhit){ // type=Projected;
698  LogTrace("SiStripMonitorTrack")<<"\nProjected recHit found"<< std::endl;
699 
700  GluedGeomDet * gdet=(GluedGeomDet *)tkgeom_->idToDet(projhit->geographicalId());
701 
702  GlobalVector gtrkdirup=gdet->toGlobal(localMomentum);
703  const SiStripRecHit2D originalhit=projhit->originalHit();
704 
705  const GeomDetUnit * det;
706  if(!StripSubdetector(originalhit.geographicalId().rawId()).stereo()){
707  //mono side
708  LogTrace("SiStripMonitorTrack")<<"\nProjected recHit found MONO"<< std::endl;
709  det=gdet->monoDet();
710  statedirection=det->toLocal(gtrkdirup);
711  if(statedirection.mag() != 0) RecHitInfo<SiStripRecHit2D>(&(originalhit),statedirection,es);
712  }
713  else{
714  LogTrace("SiStripMonitorTrack")<<"\nProjected recHit found STEREO"<< std::endl;
715  //stereo side
716  det=gdet->stereoDet();
717  statedirection=det->toLocal(gtrkdirup);
718  if(statedirection.mag() != 0) RecHitInfo<SiStripRecHit2D>(&(originalhit),statedirection,es);
719  }
720  } else if (hit2D){ // type=2D
721  statedirection=localMomentum;
722  if(statedirection.mag() != 0) RecHitInfo<SiStripRecHit2D>(hit2D,statedirection,es);
723  } else if (hit1D) { // type=1D
724  statedirection=localMomentum;
725  if(statedirection.mag() != 0) RecHitInfo<SiStripRecHit1D>(hit1D,statedirection,es);
726  } else {
727  LogDebug ("SiStripMonitorTrack")
728  << " LocalMomentum: "<<statedirection
729  << "\nLocal x-z plane angle: "<<atan2(statedirection.x(),statedirection.z());
730  }
731 
732 }
#define LogDebug(id)
const GeomDetUnit * monoDet() const
Definition: GluedGeomDet.h:20
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
Definition: GeomDet.h:52
LocalPoint toLocal(const GlobalPoint &gp) const
Conversion to the R.F. of the GeomDet.
Definition: GeomDet.h:67
uint32_t rawId() const
get the raw id
Definition: DetId.h:43
edm::ESHandle< TrackerGeometry > tkgeom_
T mag() const
Definition: PV3DBase.h:67
T z() const
Definition: PV3DBase.h:64
#define LogTrace(id)
SiStripRecHit2D originalHit() const
SiStripRecHit2D stereoHit() const
SiStripRecHit2D monoHit() const
DetId geographicalId() const
T x() const
Definition: PV3DBase.h:62
const GeomDetUnit * stereoDet() const
Definition: GluedGeomDet.h:21
template<class T >
void SiStripMonitorTrack::RecHitInfo ( const T tkrecHit,
LocalVector  LV,
const edm::EventSetup es 
)
private

Definition at line 857 of file SiStripMonitorTrack.cc.

References clusterInfos(), cond::rpcobgas::detid, findMEs(), edm::EventSetup::get(), LogTrace, NULL, OnTrack, edm::ESHandle< class >::product(), tkgeom_, vPSiStripCluster, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

857  {
858 
859  if(!tkrecHit->isValid()){
860  LogTrace("SiStripMonitorTrack") <<"\t\t Invalid Hit " << std::endl;
861  return;
862  }
863 
864  const uint32_t& detid = tkrecHit->geographicalId().rawId();
865 
866  LogTrace("SiStripMonitorTrack")
867  <<"\n\t\tRecHit on det "<<tkrecHit->geographicalId().rawId()
868  <<"\n\t\tRecHit in LP "<<tkrecHit->localPosition()
869  <<"\n\t\tRecHit in GP "<<tkgeom_->idToDet(tkrecHit->geographicalId())->surface().toGlobal(tkrecHit->localPosition())
870  <<"\n\t\tRecHit trackLocal vector "<<LV.x() << " " << LV.y() << " " << LV.z() <<std::endl;
871 
872 
873  //Retrieve tracker topology from geometry
874  edm::ESHandle<TrackerTopology> tTopoHandle;
875  es.get<IdealGeometryRecord>().get(tTopoHandle);
876  const TrackerTopology* const tTopo = tTopoHandle.product();
877 
878  //Get SiStripCluster from SiStripRecHit
879  if ( tkrecHit != NULL ){
880  const SiStripCluster* SiStripCluster_ = &*(tkrecHit->cluster());
881  SiStripClusterInfo SiStripClusterInfo_(*SiStripCluster_,es,detid);
882 
883  const Det2MEs MEs = findMEs(tTopo, detid);
884  if (clusterInfos(&SiStripClusterInfo_,detid, OnTrack, LV, MEs))
885  {
886  vPSiStripCluster.insert(SiStripCluster_);
887  }
888  }
889  else
890  {
891  edm::LogError("SiStripMonitorTrack") << "NULL hit" << std::endl;
892  }
893  }
Det2MEs findMEs(const TrackerTopology *tTopo, const uint32_t detid)
T y() const
Definition: PV3DBase.h:63
#define NULL
Definition: scimark2.h:8
edm::ESHandle< TrackerGeometry > tkgeom_
std::unordered_set< const SiStripCluster * > vPSiStripCluster
T z() const
Definition: PV3DBase.h:64
#define LogTrace(id)
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:86
bool clusterInfos(SiStripClusterInfo *cluster, const uint32_t detid, enum ClusterFlags flags, LocalVector LV, const Det2MEs &MEs)
T x() const
Definition: PV3DBase.h:62
void SiStripMonitorTrack::trackStudy ( const edm::Event ev,
const edm::EventSetup es 
)
private

Definition at line 734 of file SiStripMonitorTrack.cc.

References edm::Event::getByToken(), edm::HandleBase::isValid(), dt_dqm_sourceclient_common_cff::reco, TrackLabel_, trackStudyFromTrack(), trackStudyFromTrajectory(), trackToken_, and trackTrajToken_.

Referenced by analyze().

734  {
735 
736 using namespace std;
737 using namespace edm;
738 using namespace reco;
739 
740  // trajectory input
741  edm::Handle<TrajTrackAssociationCollection> TItkAssociatorCollection;
742  ev.getByToken(trackTrajToken_, TItkAssociatorCollection);
743  if( TItkAssociatorCollection.isValid()){
744  trackStudyFromTrajectory(TItkAssociatorCollection,es);
745  } else {
746  edm::LogError("SiStripMonitorTrack")<<"Association not found ... try w/ track collection"<<std::endl;
747 
748  // edm::Handle<std::vector<Trajectory> > trajectories;
749  // ev.getByToken(trajectoryToken_, trajectories);
750 
751  // track input
752  edm::Handle<reco::TrackCollection > trackCollectionHandle;
753  ev.getByToken(trackToken_, trackCollectionHandle);//takes the track collection
754  if (!trackCollectionHandle.isValid()){
755  edm::LogError("SiStripMonitorTrack")<<"also Track Collection is not valid !! " << TrackLabel_<<std::endl;
756  return;
757  } else {
758  trackStudyFromTrack(trackCollectionHandle,es);
759  }
760  }
761 
762 }
void trackStudyFromTrack(edm::Handle< reco::TrackCollection > trackCollectionHandle, const edm::EventSetup &es)
edm::EDGetTokenT< reco::TrackCollection > trackToken_
void trackStudyFromTrajectory(edm::Handle< TrajTrackAssociationCollection > TItkAssociatorCollection, const edm::EventSetup &es)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:449
bool isValid() const
Definition: HandleBase.h:75
edm::EDGetTokenT< TrajTrackAssociationCollection > trackTrajToken_
void SiStripMonitorTrack::trackStudyFromTrack ( edm::Handle< reco::TrackCollection trackCollectionHandle,
const edm::EventSetup es 
)
private

Definition at line 764 of file SiStripMonitorTrack.cc.

References DetId::det(), reco::HitPattern::getHitPattern(), reco::HitPattern::hitPattern, hitStudy(), i, reco::HitPattern::numberOfHits(), reco::HitPattern::pixelBarrelHitFilter(), reco::HitPattern::TRACK_HITS, HLT_25ns14e33_v3_cff::trackCollection, DetId::Tracker, and reco::HitPattern::validHitFilter().

Referenced by trackStudy().

764  {
765 
766  // edm::ESHandle<TransientTrackBuilder> builder;
767  // es.get<TransientTrackRecord>().get("TransientTrackBuilder",builder);
768  // const TransientTrackBuilder* transientTrackBuilder = builder.product();
769 
770  reco::TrackCollection trackCollection = *trackCollectionHandle;
771  for (reco::TrackCollection::const_iterator track = trackCollection.begin(), etrack = trackCollection.end();
772  track!=etrack; ++track) {
773 
774  // const reco::TransientTrack transientTrack = transientTrackBuilder->build(track);
775 
776 
777  for (trackingRecHit_iterator hit = track->recHitsBegin(), ehit = track->recHitsEnd();
778  hit!=ehit; ++hit) {
779  if (!(*hit)->isValid()) continue;
780  DetId detID = (*hit)->geographicalId();
781  if (detID.det() != DetId::Tracker) continue;
782  const TrackingRecHit* theHit = (*hit);
783  const ProjectedSiStripRecHit2D* projhit = dynamic_cast<const ProjectedSiStripRecHit2D*>( (theHit) );
784  const SiStripMatchedRecHit2D* matchedhit = dynamic_cast<const SiStripMatchedRecHit2D*> ( (theHit) );
785  const SiStripRecHit2D* hit2D = dynamic_cast<const SiStripRecHit2D*> ( (theHit) );
786  const SiStripRecHit1D* hit1D = dynamic_cast<const SiStripRecHit1D*> ( (theHit) );
787 
788  // GlobalPoint globalPoint = hit->globalPosition();
789  // reco::TrajectoryStateOnSurface stateOnSurface = transientTrack->stateOnSurface(globalPoint);
790 
791  LocalVector localMomentum;
792  hitStudy(es,projhit,matchedhit,hit2D,hit1D,localMomentum);
793  }
794 
795 
796 
797  // hit pattern of the track
798  const reco::HitPattern & hitsPattern = track->hitPattern();
799  // loop over the hits of the track
800  // for (int i=0; i<hitsPattern.numberOfHits(); i++) {
801  for (int i=0; i<hitsPattern.numberOfHits(reco::HitPattern::TRACK_HITS); i++) {
802  uint32_t hit = hitsPattern.getHitPattern(reco::HitPattern::TRACK_HITS,i);
803 
804  // if the hit is valid and in pixel barrel, print out the layer
805  if (hitsPattern.validHitFilter(hit) && hitsPattern.pixelBarrelHitFilter(hit))
806 
807  if (!hitsPattern.validHitFilter(hit)) continue;
808 // if (hitsPattern.pixelHitFilter(hit)) std::cout << "pixel" << std::endl; // pixel
809 // if (hitsPattern.pixelBarrelHitFilter(hit)) std::cout << "pixel barrel" << std::endl; // pixel barrel
810 // if (hitsPattern.pixelEndcapHitFilter(hit)) std::cout << "pixel endcap" << std::endl; // pixel endcap
811 // if (hitsPattern.stripHitFilter(hit)) std::cout << "strip" << std::endl; // strip
812 // if (hitsPattern.stripTIBHitFilter(hit)) std::cout << "TIB" << std::endl; // strip TIB
813 // if (hitsPattern.stripTIDHitFilter(hit)) std::cout << "TID" << std::endl; // strip TID
814 // if (hitsPattern.stripTOBHitFilter(hit)) std::cout << "TOB" << std::endl; // strip TOB
815 // if (hitsPattern.stripTECHitFilter(hit)) std::cout << "TEC" << std::endl; // strip TEC
816 // if (hitsPattern.muonDTHitFilter(hit)) std::cout << "DT" << std::endl; // muon DT
817 // if (hitsPattern.muonCSCHitFilter(hit)) std::cout << "CSC" << std::endl; // muon CSC
818 // if (hitsPattern.muonRPCHitFilter(hit)) std::cout << "RPC" << std::endl; // muon RPC
819 //
820 // // expert level: printout the hit in 10-bit binary format
821 // std::cout << "hit in 10-bit binary format = ";
822 // for (int j=9; j>=0; j--) {
823 // int bit = (hit >> j) & 0x1;
824 // std::cout << bit;
825 // }
826 // std::cout << std::endl;
827  }
828  }
829 }
int i
Definition: DBlmapReader.cc:9
void hitStudy(const edm::EventSetup &es, const ProjectedSiStripRecHit2D *projhit, const SiStripMatchedRecHit2D *matchedhit, const SiStripRecHit2D *hit2D, const SiStripRecHit1D *hit1D, LocalVector localMomentum)
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:13
static bool pixelBarrelHitFilter(uint16_t pattern)
Definition: HitPattern.h:516
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:698
uint16_t hitPattern[ARRAY_LENGTH]
Definition: HitPattern.h:418
Definition: DetId.h:18
uint16_t getHitPattern(HitCategory category, int position) const
Definition: HitPattern.h:456
Detector det() const
get the detector field from this detid
Definition: DetId.h:35
TrackingRecHitCollection::base::const_iterator trackingRecHit_iterator
iterator over a vector of reference to TrackingRecHit in the same collection
int numberOfHits(HitCategory category) const
Definition: HitPattern.h:718
void SiStripMonitorTrack::trackStudyFromTrajectory ( edm::Handle< TrajTrackAssociationCollection TItkAssociatorCollection,
const edm::EventSetup es 
)
private

Definition at line 831 of file SiStripMonitorTrack.cc.

References edm::AssociationMap< edm::OneToOne< std::vector< Trajectory >, reco::TrackCollection, unsigned short > >::const_iterator, i, edm::Ref< C, T, F >::key(), LogDebug, and trajectoryStudy().

Referenced by trackStudy().

831  {
832  //Perform track study
833  int i=0;
834  for(TrajTrackAssociationCollection::const_iterator it = TItkAssociatorCollection->begin();it != TItkAssociatorCollection->end(); ++it){
835  const edm::Ref<std::vector<Trajectory> > traj_iterator = it->key;
836 
837  // Trajectory Map, extract Trajectory for this track
838  reco::TrackRef trackref = it->val;
839  LogDebug("SiStripMonitorTrack")
840  << "Track number "<< i+1 << std::endl;
841  // << "\n\tmomentum: " << trackref->momentum()
842  // << "\n\tPT: " << trackref->pt()
843  // << "\n\tvertex: " << trackref->vertex()
844  // << "\n\timpact parameter: " << trackref->d0()
845  // << "\n\tcharge: " << trackref->charge()
846  // << "\n\tnormalizedChi2: " << trackref->normalizedChi2()
847  // <<"\n\tFrom EXTRA : "
848  // <<"\n\t\touter PT "<< trackref->outerPt()<<std::endl;
849  i++;
850 
851  // trajectoryStudy(traj_iterator,trackref,es);
852  trajectoryStudy(traj_iterator,es);
853 
854  }
855 }
#define LogDebug(id)
int i
Definition: DBlmapReader.cc:9
key_type key() const
Accessor for product key.
Definition: Ref.h:266
void trajectoryStudy(const edm::Ref< std::vector< Trajectory > > traj, const edm::EventSetup &es)
void SiStripMonitorTrack::trajectoryStudy ( const edm::Ref< std::vector< Trajectory > >  traj,
const edm::EventSetup es 
)
private

Definition at line 591 of file SiStripMonitorTrack.cc.

References TrackingRecHit::geographicalId(), TrajectoryStateOnSurface::localMomentum(), LogDebug, LogTrace, visualization-live-secondInstance_cfg::m, PV3DBase< T, PVType, FrameType >::mag(), GluedGeomDet::monoDet(), SiStripMatchedRecHit2D::monoHit(), ProjectedSiStripRecHit2D::originalHit(), DetId::rawId(), alignCSCRings::s, GluedGeomDet::stereoDet(), SiStripMatchedRecHit2D::stereoHit(), tkgeom_, GeomDet::toGlobal(), GeomDet::toLocal(), PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by trackStudyFromTrajectory().

591  {
592 
593 
594  const std::vector<TrajectoryMeasurement> & measurements = traj->measurements();
595  std::vector<TrajectoryMeasurement>::const_iterator traj_mes_iterator;
596  for(std::vector<TrajectoryMeasurement>::const_iterator traj_mes_iterator= measurements.begin(), traj_mes_end=measurements.end();
597  traj_mes_iterator!=traj_mes_end;traj_mes_iterator++){//loop on measurements
598  //trajectory local direction and position on detector
599  LocalVector statedirection;
600 
601  TrajectoryStateOnSurface updatedtsos=traj_mes_iterator->updatedState();
602  ConstRecHitPointer ttrh=traj_mes_iterator->recHit();
603 
604  if (!ttrh->isValid()) continue;
605 
606  const ProjectedSiStripRecHit2D* projhit = dynamic_cast<const ProjectedSiStripRecHit2D*>( ttrh->hit() );
607  const SiStripMatchedRecHit2D* matchedhit = dynamic_cast<const SiStripMatchedRecHit2D*>( ttrh->hit() );
608  const SiStripRecHit2D* hit2D = dynamic_cast<const SiStripRecHit2D*>( ttrh->hit() );
609  const SiStripRecHit1D* hit1D = dynamic_cast<const SiStripRecHit1D*>( ttrh->hit() );
610 
611  // RecHitType type=Single;
612 
613  if(matchedhit){
614  LogTrace("SiStripMonitorTrack")<<"\nMatched recHit found"<< std::endl;
615  // type=Matched;
616 
617  GluedGeomDet * gdet=(GluedGeomDet *)tkgeom_->idToDet(matchedhit->geographicalId());
618  GlobalVector gtrkdirup=gdet->toGlobal(updatedtsos.localMomentum());
619  //mono side
620  const GeomDetUnit * monodet=gdet->monoDet();
621  statedirection=monodet->toLocal(gtrkdirup);
622  SiStripRecHit2D m = matchedhit->monoHit();
623  // if(statedirection.mag() != 0) RecHitInfo<SiStripRecHit2D>(&m,statedirection,trackref,es);
624  if(statedirection.mag() != 0) RecHitInfo<SiStripRecHit2D>(&m,statedirection,es);
625  //stereo side
626  const GeomDetUnit * stereodet=gdet->stereoDet();
627  statedirection=stereodet->toLocal(gtrkdirup);
628  SiStripRecHit2D s = matchedhit->stereoHit();
629  // if(statedirection.mag() != 0) RecHitInfo<SiStripRecHit2D>(&s,statedirection,trackref,es);
630  if(statedirection.mag() != 0) RecHitInfo<SiStripRecHit2D>(&s,statedirection,es);
631  }
632  else if(projhit){
633  LogTrace("SiStripMonitorTrack")<<"\nProjected recHit found"<< std::endl;
634  // type=Projected;
635  GluedGeomDet * gdet=(GluedGeomDet *)tkgeom_->idToDet(projhit->geographicalId());
636 
637  GlobalVector gtrkdirup=gdet->toGlobal(updatedtsos.localMomentum());
638  const SiStripRecHit2D originalhit=projhit->originalHit();
639  const GeomDetUnit * det;
640  if(!StripSubdetector(originalhit.geographicalId().rawId()).stereo()){
641  //mono side
642  LogTrace("SiStripMonitorTrack")<<"\nProjected recHit found MONO"<< std::endl;
643  det=gdet->monoDet();
644  statedirection=det->toLocal(gtrkdirup);
645  if(statedirection.mag() != 0) RecHitInfo<SiStripRecHit2D>(&(originalhit),statedirection,es);
646  }
647  else{
648  LogTrace("SiStripMonitorTrack")<<"\nProjected recHit found STEREO"<< std::endl;
649  //stereo side
650  det=gdet->stereoDet();
651  statedirection=det->toLocal(gtrkdirup);
652  if(statedirection.mag() != 0) RecHitInfo<SiStripRecHit2D>(&(originalhit),statedirection,es);
653  }
654  }else if (hit2D){
655  statedirection=updatedtsos.localMomentum();
656  if(statedirection.mag() != 0) RecHitInfo<SiStripRecHit2D>(hit2D,statedirection,es);
657  } else if (hit1D) {
658  statedirection=updatedtsos.localMomentum();
659  if(statedirection.mag() != 0) RecHitInfo<SiStripRecHit1D>(hit1D,statedirection,es);
660  } else {
661  LogDebug ("SiStripMonitorTrack")
662  << " LocalMomentum: "<<statedirection
663  << "\nLocal x-z plane angle: "<<atan2(statedirection.x(),statedirection.z());
664  }
665 
666  }
667 
668 }
#define LogDebug(id)
const GeomDetUnit * monoDet() const
Definition: GluedGeomDet.h:20
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
Definition: GeomDet.h:52
LocalPoint toLocal(const GlobalPoint &gp) const
Conversion to the R.F. of the GeomDet.
Definition: GeomDet.h:67
uint32_t rawId() const
get the raw id
Definition: DetId.h:43
LocalVector localMomentum() const
edm::ESHandle< TrackerGeometry > tkgeom_
TransientTrackingRecHit::ConstRecHitPointer ConstRecHitPointer
T mag() const
Definition: PV3DBase.h:67
T z() const
Definition: PV3DBase.h:64
#define LogTrace(id)
SiStripRecHit2D originalHit() const
SiStripRecHit2D stereoHit() const
SiStripRecHit2D monoHit() const
DetId geographicalId() const
T x() const
Definition: PV3DBase.h:62
const GeomDetUnit * stereoDet() const
Definition: GluedGeomDet.h:21

Member Data Documentation

bool SiStripMonitorTrack::applyClusterQuality_
private

Definition at line 224 of file SiStripMonitorTrack.h.

Referenced by clusterInfos(), and SiStripMonitorTrack().

edm::InputTag SiStripMonitorTrack::Cluster_src_
private

Definition at line 201 of file SiStripMonitorTrack.h.

Referenced by SiStripMonitorTrack().

edm::EDGetTokenT<edmNew::DetSetVector<SiStripCluster> > SiStripMonitorTrack::clusterToken_
private

Definition at line 203 of file SiStripMonitorTrack.h.

Referenced by AllClusters(), and SiStripMonitorTrack().

edm::ParameterSet SiStripMonitorTrack::conf_
private
SiStripDCSStatus* SiStripMonitorTrack::dcsStatus_
private

Definition at line 230 of file SiStripMonitorTrack.h.

Referenced by analyze(), SiStripMonitorTrack(), and ~SiStripMonitorTrack().

edm::EventNumber_t SiStripMonitorTrack::eventNb
private

Definition at line 221 of file SiStripMonitorTrack.h.

Referenced by analyze(), clusterInfos(), fillMEs(), and fillModMEs().

int SiStripMonitorTrack::firstEvent
private

Definition at line 222 of file SiStripMonitorTrack.h.

Referenced by looper.Looper::loop(), and Printer.Printer::process().

SiStripFolderOrganizer SiStripMonitorTrack::folderOrganizer_
private

Definition at line 232 of file SiStripMonitorTrack.h.

Referenced by findMEs().

GenericTriggerEventFlag* SiStripMonitorTrack::genTriggerEventFlag_
private

Definition at line 231 of file SiStripMonitorTrack.h.

Referenced by analyze(), dqmBeginRun(), and ~SiStripMonitorTrack().

std::string SiStripMonitorTrack::histname
private

Definition at line 122 of file SiStripMonitorTrack.h.

bool SiStripMonitorTrack::HistoFlag_On_
private

Definition at line 211 of file SiStripMonitorTrack.h.

float SiStripMonitorTrack::iLumisection
private

Definition at line 124 of file SiStripMonitorTrack.h.

Referenced by analyze().

float SiStripMonitorTrack::iOrbitSec
private

Definition at line 124 of file SiStripMonitorTrack.h.

std::map<std::string, LayerMEs> SiStripMonitorTrack::LayerMEsMap
private

Definition at line 187 of file SiStripMonitorTrack.h.

Referenced by book(), bookLayerMEs(), and findMEs().

LocalVector SiStripMonitorTrack::LV
private

Definition at line 123 of file SiStripMonitorTrack.h.

bool SiStripMonitorTrack::Mod_On_
private

Definition at line 208 of file SiStripMonitorTrack.h.

Referenced by book(), clusterInfos(), and SiStripMonitorTrack().

std::map<std::string, ModMEs> SiStripMonitorTrack::ModMEsMap
private

Definition at line 186 of file SiStripMonitorTrack.h.

Referenced by bookModMEs(), and fillModMEs().

bool SiStripMonitorTrack::OffHisto_On_
private

Definition at line 210 of file SiStripMonitorTrack.h.

edm::ParameterSet SiStripMonitorTrack::Parameters
private

Definition at line 200 of file SiStripMonitorTrack.h.

bool SiStripMonitorTrack::ring_flag
private

Definition at line 212 of file SiStripMonitorTrack.h.

std::map<std::string, RingMEs> SiStripMonitorTrack::RingMEsMap
private

Definition at line 188 of file SiStripMonitorTrack.h.

Referenced by book(), bookRingMEs(), and findMEs().

edm::ESHandle<SiStripDetCabling> SiStripMonitorTrack::SiStripDetCabling_
private

Definition at line 198 of file SiStripMonitorTrack.h.

Referenced by book(), bookLayerMEs(), bookModMEs(), and dqmBeginRun().

double SiStripMonitorTrack::sToNLowerLimit_
private

Definition at line 225 of file SiStripMonitorTrack.h.

Referenced by clusterInfos(), and SiStripMonitorTrack().

double SiStripMonitorTrack::sToNUpperLimit_
private

Definition at line 226 of file SiStripMonitorTrack.h.

Referenced by clusterInfos(), and SiStripMonitorTrack().

std::map<std::string, SubDetMEs> SiStripMonitorTrack::SubDetMEsMap
private

Definition at line 189 of file SiStripMonitorTrack.h.

Referenced by analyze(), book(), bookSubDetMEs(), and findMEs().

edm::ESHandle<TrackerGeometry> SiStripMonitorTrack::tkgeom_
private
TkHistoMap * SiStripMonitorTrack::tkhisto_NumOffTrack
private

Definition at line 129 of file SiStripMonitorTrack.h.

Referenced by book(), and clusterInfos().

TkHistoMap * SiStripMonitorTrack::tkhisto_NumOnTrack
private

Definition at line 129 of file SiStripMonitorTrack.h.

Referenced by book(), and clusterInfos().

TkHistoMap* SiStripMonitorTrack::tkhisto_StoNCorrOnTrack
private

Definition at line 129 of file SiStripMonitorTrack.h.

Referenced by book(), and clusterInfos().

bool SiStripMonitorTrack::TkHistoMap_On_
private

Definition at line 213 of file SiStripMonitorTrack.h.

Referenced by book(), clusterInfos(), and SiStripMonitorTrack().

std::string SiStripMonitorTrack::topFolderName_
private

Definition at line 126 of file SiStripMonitorTrack.h.

Referenced by book(), and SiStripMonitorTrack().

bool SiStripMonitorTrack::trackAssociatorCollection_in_EventTree
private

Definition at line 220 of file SiStripMonitorTrack.h.

std::string SiStripMonitorTrack::TrackLabel_
private

Definition at line 216 of file SiStripMonitorTrack.h.

Referenced by SiStripMonitorTrack(), and trackStudy().

std::string SiStripMonitorTrack::TrackProducer_
private

Definition at line 215 of file SiStripMonitorTrack.h.

Referenced by SiStripMonitorTrack().

bool SiStripMonitorTrack::tracksCollection_in_EventTree
private

Definition at line 219 of file SiStripMonitorTrack.h.

edm::EDGetTokenT<reco::TrackCollection> SiStripMonitorTrack::trackToken_
private

Definition at line 204 of file SiStripMonitorTrack.h.

Referenced by SiStripMonitorTrack(), and trackStudy().

edm::EDGetTokenT<TrajTrackAssociationCollection> SiStripMonitorTrack::trackTrajToken_
private

Definition at line 206 of file SiStripMonitorTrack.h.

Referenced by SiStripMonitorTrack(), and trackStudy().

bool SiStripMonitorTrack::Trend_On_
private

Definition at line 209 of file SiStripMonitorTrack.h.

Referenced by analyze(), bookSubDetMEs(), and SiStripMonitorTrack().

std::unordered_set<const SiStripCluster*> SiStripMonitorTrack::vPSiStripCluster
private

Definition at line 218 of file SiStripMonitorTrack.h.

Referenced by AllClusters(), analyze(), and RecHitInfo().

double SiStripMonitorTrack::widthLowerLimit_
private

Definition at line 227 of file SiStripMonitorTrack.h.

Referenced by clusterInfos(), and SiStripMonitorTrack().

double SiStripMonitorTrack::widthUpperLimit_
private

Definition at line 228 of file SiStripMonitorTrack.h.

Referenced by clusterInfos(), and SiStripMonitorTrack().