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 Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 

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
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDAnalyzerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private 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)
 
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::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 25 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_.

25  :
26  conf_(conf),
28  firstEvent(-1),
30 {
31  Cluster_src_ = conf.getParameter<edm::InputTag>("Cluster_src");
32  Mod_On_ = conf.getParameter<bool>("Mod_On");
33  Trend_On_ = conf.getParameter<bool>("Trend_On");
34  TkHistoMap_On_ = conf.getParameter<bool>("TkHistoMap_On");
35 
36  TrackProducer_ = conf_.getParameter<std::string>("TrackProducer");
37  TrackLabel_ = conf_.getParameter<std::string>("TrackLabel");
38 
39  topFolderName_ = conf_.getParameter<std::string>("TopFolderName");
40 
41  clusterToken_ = consumes<edmNew::DetSetVector<SiStripCluster> >(Cluster_src_);
42  trackToken_ = consumes<reco::TrackCollection>(edm::InputTag(TrackProducer_,TrackLabel_) );
43  trackTrajToken_ = consumes<TrajTrackAssociationCollection>(edm::InputTag(TrackProducer_,TrackLabel_) );
44 
45  // cluster quality conditions
46  edm::ParameterSet cluster_condition = conf_.getParameter<edm::ParameterSet>("ClusterConditions");
47  applyClusterQuality_ = cluster_condition.getParameter<bool>("On");
48  sToNLowerLimit_ = cluster_condition.getParameter<double>("minStoN");
49  sToNUpperLimit_ = cluster_condition.getParameter<double>("maxStoN");
50  widthLowerLimit_ = cluster_condition.getParameter<double>("minWidth");
51  widthUpperLimit_ = cluster_condition.getParameter<double>("maxWidth");
52 
53 
54  // Create DCS Status
55  bool checkDCS = conf_.getParameter<bool>("UseDCSFiltering");
56  if (checkDCS) dcsStatus_ = new SiStripDCSStatus(consumesCollector());
57  else dcsStatus_ = 0;
58 }
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 61 of file SiStripMonitorTrack.cc.

References dcsStatus_, and genTriggerEventFlag_.

61  {
62  if (dcsStatus_) delete dcsStatus_;
64 }
SiStripDCSStatus * dcsStatus_
GenericTriggerEventFlag * genTriggerEventFlag_

Member Function Documentation

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

Definition at line 948 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().

949 {
950 
951  //Retrieve tracker topology from geometry
952  edm::ESHandle<TrackerTopology> tTopoHandle;
953  es.get<TrackerTopologyRcd>().get(tTopoHandle);
954  const TrackerTopology* const tTopo = tTopoHandle.product();
955 
957  ev.getByToken( clusterToken_, siStripClusterHandle);
958  if (siStripClusterHandle.isValid()){
959  //Loop on Dets
960  for (edmNew::DetSetVector<SiStripCluster>::const_iterator DSViter=siStripClusterHandle->begin(), DSVEnd=siStripClusterHandle->end();
961  DSViter!=DSVEnd; ++DSViter) {
962 
963  uint32_t detid=DSViter->id();
964  const Det2MEs MEs = findMEs(tTopo, detid);
965 
966  LogDebug("SiStripMonitorTrack") << "on detid "<< detid << " N Cluster= " << DSViter->size();
967 
968  //Loop on Clusters
969  for(edmNew::DetSet<SiStripCluster>::const_iterator ClusIter = DSViter->begin(), ClusEnd = DSViter->end();
970  ClusIter!=ClusEnd; ++ClusIter) {
971 
972  if (vPSiStripCluster.find(&*ClusIter) == vPSiStripCluster.end()) {
973  SiStripClusterInfo SiStripClusterInfo_(*ClusIter,es,detid);
974  clusterInfos(&SiStripClusterInfo_,detid,OffTrack,LV,MEs);
975  }
976  }
977  }
978  } else {
979  edm::LogError("SiStripMonitorTrack")<< "ClusterCollection is not valid!!" << std::endl;
980  return;
981  }
982 }
#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:464
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:56
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 90 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.

91 {
92  // Filter out events if DCS checking is requested
93  if (dcsStatus_ && !dcsStatus_->getStatus(e,es)) return;
94 
95  // Filter out events if Trigger Filtering is requested
96  if (genTriggerEventFlag_->on()&& ! genTriggerEventFlag_->accept( e, es) ) return;
97 
98  //initialization of global quantities
99  LogDebug("SiStripMonitorTrack") << "[SiStripMonitorTrack::analyse] " << "Run " << e.id().run() << " Event " << e.id().event() << std::endl;
100  eventNb = e.id().event();
101  vPSiStripCluster.clear();
102 
103  iLumisection = e.orbitNumber()/262144.0;
104 
105  // initialise # of clusters
106  for (std::map<std::string, SubDetMEs>::iterator iSubDet = SubDetMEsMap.begin();
107  iSubDet != SubDetMEsMap.end(); iSubDet++) {
108  iSubDet->second.totNClustersOnTrack = 0;
109  iSubDet->second.totNClustersOffTrack = 0;
110  }
111 
112  //Perform track study
113  trackStudy(e, es);
114 
115  //Perform Cluster Study (irrespectively to tracks)
116 
117  AllClusters(e, es); //analyzes the off Track Clusters
118 
119  //Summary Counts of clusters
120  std::map<std::string, MonitorElement*>::iterator iME;
121  std::map<std::string, LayerMEs>::iterator iLayerME;
122 
123  if (Trend_On_) {
124  // for (std::map<std::string, SubDetMEs>::iterator iSubDet = SubDetMEsMap.begin(), iterEnd=SubDetMEsMaps.end();
125  // iSubDet != iterEnd; ++iSubDet) {
126  for (auto const &iSubDet : SubDetMEsMap) {
127  SubDetMEs subdet_mes = iSubDet.second;
128  if (subdet_mes.totNClustersOnTrack > 0) {
129  fillME(subdet_mes.nClustersOnTrack, subdet_mes.totNClustersOnTrack);
130  }
131  fillME(subdet_mes.nClustersOffTrack, subdet_mes.totNClustersOffTrack);
132  fillME(subdet_mes.nClustersTrendOnTrack,iLumisection,subdet_mes.totNClustersOnTrack);
133  fillME(subdet_mes.nClustersTrendOffTrack,iLumisection,subdet_mes.totNClustersOffTrack);
134  }
135  } else {
136  for (auto const &iSubDet : SubDetMEsMap) {
137  SubDetMEs subdet_mes = iSubDet.second;
138  if (subdet_mes.totNClustersOnTrack > 0) {
139  fillME(subdet_mes.nClustersOnTrack, subdet_mes.totNClustersOnTrack);
140  }
141  fillME(subdet_mes.nClustersOffTrack, subdet_mes.totNClustersOffTrack);
142  }
143  }
144 }
#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 147 of file SiStripMonitorTrack.cc.

References bookLayerMEs(), bookModMEs(), bookRingMEs(), bookSubDetMEs(), cond::rpcobgas::detid, SiStripFolderOrganizer::GetSubDetAndLayer(), SiStripFolderOrganizer::getSubDetFolderAndTag(), SiStripHistoId::getSubdetid(), LayerMEsMap, Mod_On_, NULL, 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().

148 {
149 
150  SiStripFolderOrganizer folder_organizer;
151  folder_organizer.setSiStripFolderName(topFolderName_);
152  //******** TkHistoMaps
153  if (TkHistoMap_On_) {
154  tkhisto_StoNCorrOnTrack = new TkHistoMap(ibooker , topFolderName_ ,"TkHMap_StoNCorrOnTrack", 0.0,true);
155  tkhisto_NumOnTrack = new TkHistoMap(ibooker , topFolderName_, "TkHMap_NumberOfOnTrackCluster", 0.0,true);
156  tkhisto_NumOffTrack = new TkHistoMap(ibooker , topFolderName_, "TkHMap_NumberOfOfffTrackCluster",0.0,true);
157  }
158  //******** TkHistoMaps
159 
160  std::vector<uint32_t> vdetId_;
161  SiStripDetCabling_->addActiveDetectorsRawIds(vdetId_);
162  const char* tec = "TEC";
163  const char* tid = "TID";
164  //Histos for each detector, layer and module
165  SiStripHistoId hidmanager;
166 
167  if(Mod_On_) {
168  for (std::vector<uint32_t>::const_iterator detid_iter=vdetId_.begin(),detid_end=vdetId_.end();detid_iter!=detid_end;++detid_iter){ //loop on all the active detid
169  uint32_t detid = *detid_iter;
170 
171  if (detid < 1){
172  edm::LogError("SiStripMonitorTrack")<< "[" <<__PRETTY_FUNCTION__ << "] invalid detid " << detid<< std::endl;
173  continue;
174  }
175 
176 
177  //std::string name;
178 
179  // book Layer and RING plots
180  std::pair<std::string,int32_t> det_layer_pair = folder_organizer.GetSubDetAndLayer(detid,tTopo,false);
181  /*
182  std::string thickness;
183  std::pair<std::string,int32_t> det_layer_pair_test = folder_organizer.GetSubDetAndLayerThickness(detid,tTopo,thickness);
184  std::cout << "[SiStripMonitorTrack::book] det_layer_pair " << det_layer_pair.first << " " << det_layer_pair.second << " " << thickness << std::endl;
185  */
186 
187  std::string layer_id = hidmanager.getSubdetid(detid, tTopo, false);
188 
189  std::map<std::string, LayerMEs>::iterator iLayerME = LayerMEsMap.find(layer_id);
190  if(iLayerME==LayerMEsMap.end()){
191  folder_organizer.setLayerFolder(detid, tTopo, det_layer_pair.second, false);
192  bookLayerMEs(ibooker , detid, layer_id);
193  }
194 
195  const char* subdet = det_layer_pair.first.c_str();
196  if ( std::strstr(subdet, tec) != NULL || std::strstr(subdet, tid) != NULL ) {
197  std::string ring_id = hidmanager.getSubdetid(detid, tTopo, true);
198  std::map<std::string, RingMEs>::iterator iRingME = RingMEsMap.find(ring_id);
199  if(iRingME==RingMEsMap.end()){
200  std::pair<std::string,int32_t> det_ring_pair = folder_organizer.GetSubDetAndLayer(detid,tTopo,true);
201  folder_organizer.setLayerFolder(detid, tTopo, det_ring_pair.second, true);
202  bookRingMEs(ibooker , detid, ring_id);
203  }
204  }
205 
206  // book sub-detector plots
207  std::pair<std::string,std::string> sdet_pair = folder_organizer.getSubDetFolderAndTag(detid, tTopo);
208  if (SubDetMEsMap.find(sdet_pair.second) == SubDetMEsMap.end()){
209  ibooker.setCurrentFolder(sdet_pair.first);
210  bookSubDetMEs(ibooker , sdet_pair.second);
211  }
212  // book module plots
213  folder_organizer.setDetectorFolder(detid,tTopo);
214  bookModMEs(ibooker , *detid_iter);
215  }//end loop on detectors detid
216  } else {
217  for (std::vector<uint32_t>::const_iterator detid_iter=vdetId_.begin(),detid_end=vdetId_.end();detid_iter!=detid_end;++detid_iter){ //loop on all the active detid
218  uint32_t detid = *detid_iter;
219 
220  if (detid < 1){
221  edm::LogError("SiStripMonitorTrack")<< "[" <<__PRETTY_FUNCTION__ << "] invalid detid " << detid<< std::endl;
222  continue;
223  }
224 
225 
226  //std::string name;
227 
228  // book Layer and RING plots
229  std::pair<std::string,int32_t> det_layer_pair = folder_organizer.GetSubDetAndLayer(detid,tTopo,false);
230  /*
231  std::string thickness;
232  std::pair<std::string,int32_t> det_layer_pair_test = folder_organizer.GetSubDetAndLayerThickness(detid,tTopo,thickness);
233  std::cout << "[SiStripMonitorTrack::book] det_layer_pair " << det_layer_pair.first << " " << det_layer_pair.second << " " << thickness << std::endl;
234  */
235 
236  std::string layer_id = hidmanager.getSubdetid(detid, tTopo, false);
237 
238  std::map<std::string, LayerMEs>::iterator iLayerME = LayerMEsMap.find(layer_id);
239  if(iLayerME==LayerMEsMap.end()){
240  folder_organizer.setLayerFolder(detid, tTopo, det_layer_pair.second, false);
241  bookLayerMEs(ibooker , detid, layer_id);
242  }
243 
244  const char* subdet = det_layer_pair.first.c_str();
245  if ( std::strstr(subdet, tec) != NULL || std::strstr(subdet, tid) != NULL ) {
246  std::string ring_id = hidmanager.getSubdetid(detid, tTopo, true);
247  std::map<std::string, RingMEs>::iterator iRingME = RingMEsMap.find(ring_id);
248  if(iRingME==RingMEsMap.end()){
249  std::pair<std::string,int32_t> det_ring_pair = folder_organizer.GetSubDetAndLayer(detid,tTopo,true);
250  folder_organizer.setLayerFolder(detid, tTopo, det_ring_pair.second, true);
251  bookRingMEs(ibooker , detid, ring_id);
252  }
253  }
254 
255  // book sub-detector plots
256  std::pair<std::string,std::string> sdet_pair = folder_organizer.getSubDetFolderAndTag(detid, tTopo);
257  if (SubDetMEsMap.find(sdet_pair.second) == SubDetMEsMap.end()){
258  ibooker.setCurrentFolder(sdet_pair.first);
259  bookSubDetMEs(ibooker , sdet_pair.second);
260  }
261  }//end loop on detectors detid
262  }
263 }
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)
#define NULL
Definition: scimark2.h:8
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 80 of file SiStripMonitorTrack.cc.

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

81 {
82  //Retrieve tracker topology from geometry
84  es.get<TrackerTopologyRcd>().get(tTopoHandle);
85  const TrackerTopology* const tTopo = tTopoHandle.product();
86  book(ibooker , tTopo);
87 }
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 333 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().

334 {
335  std::string name = "layer";
336  std::string view = "layerView";
337  std::string hname;
338  std::string hpar;
339  SiStripHistoId hidmanager;
340 
341  LayerMEs theLayerMEs;
342  theLayerMEs.ClusterStoNCorrOnTrack = 0;
343  theLayerMEs.ClusterChargeCorrOnTrack = 0;
344  theLayerMEs.ClusterChargeOnTrack = 0;
345  theLayerMEs.ClusterChargeOffTrack = 0;
346  theLayerMEs.ClusterNoiseOnTrack = 0;
347  theLayerMEs.ClusterNoiseOffTrack = 0;
348  theLayerMEs.ClusterWidthOnTrack = 0;
349  theLayerMEs.ClusterWidthOffTrack = 0;
350  theLayerMEs.ClusterPosOnTrack = 0;
351  theLayerMEs.ClusterPosOffTrack = 0;
352  theLayerMEs.ClusterChargePerCMfromTrack = 0;
353  theLayerMEs.ClusterChargePerCMfromOriginOnTrack = 0;
354  theLayerMEs.ClusterChargePerCMfromOriginOffTrack = 0;
355 
356  // Signal/Noise (w/ cluster charge corrected)
357  hname = hidmanager.createHistoLayer("Summary_ClusterStoNCorr",name,layer_id,"OnTrack");
358  hpar = "TH1ClusterStoNCorr";
359  theLayerMEs.ClusterStoNCorrOnTrack = handleBookMEs(ibooker,view,layer_id,hpar,hname);
360 
361  // Cluster Charge Corrected
362  hname = hidmanager.createHistoLayer("Summary_ClusterChargeCorr",name,layer_id,"OnTrack");
363  hpar = "TH1ClusterChargeCorr";
364  theLayerMEs.ClusterChargeCorrOnTrack = handleBookMEs(ibooker,view,layer_id,hpar,hname);
365 
366  // Cluster Charge (On and Off Track)
367  hname = hidmanager.createHistoLayer("Summary_ClusterCharge",name,layer_id,"OnTrack");
368  hpar = "TH1ClusterCharge";
369  theLayerMEs.ClusterChargeOnTrack = handleBookMEs(ibooker,view,layer_id,hpar,hname);
370 
371  hname = hidmanager.createHistoLayer("Summary_ClusterCharge",name,layer_id,"OffTrack");
372  hpar = "TH1ClusterCharge";
373  theLayerMEs.ClusterChargeOffTrack = handleBookMEs(ibooker,view,layer_id,hpar,hname);
374 
375  // Cluster Noise (On and Off Track)
376  hname = hidmanager.createHistoLayer("Summary_ClusterNoise",name,layer_id,"OnTrack");
377  hpar = "TH1ClusterNoise";
378  theLayerMEs.ClusterNoiseOnTrack = handleBookMEs(ibooker,view,layer_id,hpar,hname);
379 
380  hname = hidmanager.createHistoLayer("Summary_ClusterNoise",name,layer_id,"OffTrack");
381  hpar = "TH1ClusterNoise";
382  theLayerMEs.ClusterNoiseOffTrack = handleBookMEs(ibooker,view,layer_id,hpar,hname);
383 
384  // Cluster Width (On and Off Track)
385  hname = hidmanager.createHistoLayer("Summary_ClusterWidth",name,layer_id,"OnTrack");
386  hpar = "TH1ClusterWidth";
387  theLayerMEs.ClusterWidthOnTrack = handleBookMEs(ibooker,view,layer_id,hpar,hname);
388 
389  hname = hidmanager.createHistoLayer("Summary_ClusterWidth",name,layer_id,"OffTrack");
390  hpar = "TH1ClusterWidth";
391  theLayerMEs.ClusterWidthOffTrack = handleBookMEs(ibooker,view,layer_id,hpar,hname);
392 
393  //Cluster Position
394  short total_nr_strips = SiStripDetCabling_->nApvPairs(mod_id) * 2 * 128;
395  if (layer_id.find("TEC") != std::string::npos) total_nr_strips = 3 * 2 * 128;
396 
397  hname = hidmanager.createHistoLayer("Summary_ClusterPosition",name,layer_id,"OnTrack");
398  theLayerMEs.ClusterPosOnTrack = ibooker.book1D(hname, hname, total_nr_strips, 0.5,total_nr_strips+0.5);
399 
400  hname = hidmanager.createHistoLayer("Summary_ClusterPosition",name,layer_id,"OffTrack");
401  theLayerMEs.ClusterPosOffTrack = ibooker.book1D(hname, hname, total_nr_strips, 0.5,total_nr_strips+0.5);
402 
403  // dQ/dx
404  hname = hidmanager.createHistoLayer("Summary_ClusterChargePerCMfromTrack",name,layer_id,"");
405  hpar = "TH1ClusterChargePerCM";
406  theLayerMEs.ClusterChargePerCMfromTrack = handleBookMEs(ibooker,view,layer_id,hpar,hname);
407 
408  hname = hidmanager.createHistoLayer("Summary_ClusterChargePerCMfromOrigin",name,layer_id,"OnTrack");
409  hpar = "TH1ClusterChargePerCM";
410  theLayerMEs.ClusterChargePerCMfromOriginOnTrack = handleBookMEs(ibooker,view,layer_id,hpar,hname);
411 
412  hname = hidmanager.createHistoLayer("Summary_ClusterChargePerCMfromOrigin",name,layer_id,"OffTrack");
413  hpar = "TH1ClusterChargePerCM";
414  theLayerMEs.ClusterChargePerCMfromOriginOffTrack = handleBookMEs(ibooker,view,layer_id,hpar,hname);
415 
416  //bookeeping
417  LayerMEsMap[layer_id]=theLayerMEs;
418 
419 }
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 
)
inlineprivate

Definition at line 578 of file SiStripMonitorTrack.cc.

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

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

579 {
580  Parameters = conf_.getParameter<edm::ParameterSet>(ParameterSetLabel);
581  return ibooker.book1D(HistoName,HistoName,
582  Parameters.getParameter<int32_t>("Nbinx"),
583  Parameters.getParameter<double>("xmin"),
584  Parameters.getParameter<double>("xmax")
585  );
586 }
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 
)
inlineprivate

Definition at line 589 of file SiStripMonitorTrack.cc.

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

590 {
591  Parameters = conf_.getParameter<edm::ParameterSet>(ParameterSetLabel);
592  return ibooker.book2D(HistoName,HistoName,
593  Parameters.getParameter<int32_t>("Nbinx"),
594  Parameters.getParameter<double>("xmin"),
595  Parameters.getParameter<double>("xmax"),
596  Parameters.getParameter<int32_t>("Nbiny"),
597  Parameters.getParameter<double>("ymin"),
598  Parameters.getParameter<double>("ymax")
599  );
600 }
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 
)
inlineprivate

Definition at line 603 of file SiStripMonitorTrack.cc.

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

604 {
605  Parameters = conf_.getParameter<edm::ParameterSet>(ParameterSetLabel);
606  return ibooker.book3D(HistoName,HistoName,
607  Parameters.getParameter<int32_t>("Nbinx"),
608  Parameters.getParameter<double>("xmin"),
609  Parameters.getParameter<double>("xmax"),
610  Parameters.getParameter<int32_t>("Nbiny"),
611  Parameters.getParameter<double>("ymin"),
612  Parameters.getParameter<double>("ymax"),
613  Parameters.getParameter<int32_t>("Nbinz"),
614  Parameters.getParameter<double>("zmin"),
615  Parameters.getParameter<double>("zmax")
616  );
617 }
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 
)
inlineprivate

Definition at line 620 of file SiStripMonitorTrack.cc.

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

Referenced by bookModMEs().

621 {
622  Parameters = conf_.getParameter<edm::ParameterSet>(ParameterSetLabel);
623  return ibooker.bookProfile(HistoName,HistoName,
624  Parameters.getParameter<int32_t>("Nbinx"),
625  Parameters.getParameter<double>("xmin"),
626  Parameters.getParameter<double>("xmax"),
627  Parameters.getParameter<int32_t>("Nbiny"),
628  Parameters.getParameter<double>("ymin"),
629  Parameters.getParameter<double>("ymax"),
630  "" );
631 }
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 634 of file SiStripMonitorTrack.cc.

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

Referenced by bookSubDetMEs().

635 {
636  edm::ParameterSet ParametersTrend = conf_.getParameter<edm::ParameterSet>("Trending");
638  ParametersTrend.getParameter<int32_t>("Nbins"),
639  ParametersTrend.getParameter<double>("xmin"),
640  ParametersTrend.getParameter<double>("xmax"),
641  0 , 0 , "" );
642  if (me->kind() == MonitorElement::DQM_KIND_TPROFILE) me->getTH1()->SetCanExtend(TH1::kAllAxes);
643 
644  if(!me) return me;
645  me->setAxisTitle("Lumisection",1);
646  return me;
647 }
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 266 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().

267 {
268  std::string name = "det";
269  SiStripHistoId hidmanager;
270  std::string hid = hidmanager.createHistoId("",name,id);
271  std::map<std::string, ModMEs>::iterator iModME = ModMEsMap.find(hid);
272  if(iModME==ModMEsMap.end()){
273  ModMEs theModMEs;
274  theModMEs.ClusterStoNCorr = 0;
275  theModMEs.ClusterCharge = 0;
276  theModMEs.ClusterChargeCorr = 0;
277  theModMEs.ClusterWidth = 0;
278  theModMEs.ClusterPos = 0;
279  theModMEs.ClusterPGV = 0;
280  theModMEs.ClusterChargePerCMfromTrack = 0;
281  theModMEs.ClusterChargePerCMfromOrigin = 0;
282 
283  // Cluster Width
284  theModMEs.ClusterWidth=bookME1D(ibooker , "TH1ClusterWidth", hidmanager.createHistoId("ClusterWidth_OnTrack",name,id).c_str());
285  ibooker.tag(theModMEs.ClusterWidth,id);
286  // Cluster Charge
287  theModMEs.ClusterCharge=bookME1D(ibooker , "TH1ClusterCharge", hidmanager.createHistoId("ClusterCharge_OnTrack",name,id).c_str());
288  ibooker.tag(theModMEs.ClusterCharge,id);
289  // Cluster Charge Corrected
290  theModMEs.ClusterChargeCorr=bookME1D(ibooker , "TH1ClusterChargeCorr", hidmanager.createHistoId("ClusterChargeCorr_OnTrack",name,id).c_str());
291  ibooker.tag(theModMEs.ClusterChargeCorr,id);
292  // Cluster StoN Corrected
293  theModMEs.ClusterStoNCorr=bookME1D(ibooker , "TH1ClusterStoNCorrMod", hidmanager.createHistoId("ClusterStoNCorr_OnTrack",name,id).c_str());
294  ibooker.tag(theModMEs.ClusterStoNCorr,id);
295  // Cluster Position
296  short total_nr_strips = SiStripDetCabling_->nApvPairs(id) * 2 * 128;
297  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);
298  ibooker.tag(theModMEs.ClusterPos,id);
299  // Cluster PGV
300  theModMEs.ClusterPGV=bookMEProfile(ibooker , "TProfileClusterPGV", hidmanager.createHistoId("PGV_OnTrack",name,id).c_str());
301  ibooker.tag(theModMEs.ClusterPGV,id);
302  // Cluster Charge per cm
303  theModMEs.ClusterChargePerCMfromTrack = bookME1D(ibooker , "TH1ClusterChargePerCM", hidmanager.createHistoId("ClusterChargePerCMfromTrack",name,id).c_str());
304  ibooker.tag(theModMEs.ClusterChargePerCMfromTrack,id);
305 
306  theModMEs.ClusterChargePerCMfromOrigin = bookME1D(ibooker , "TH1ClusterChargePerCM", hidmanager.createHistoId("ClusterChargePerCMfromOrigin",name,id).c_str());
307  ibooker.tag(theModMEs.ClusterChargePerCMfromOrigin,id);
308 
309  ModMEsMap[hid]=theModMEs;
310  }
311 }
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 421 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().

422 {
423 
424  std::string name = "ring";
425  std::string view = "ringView";
426  std::string hname;
427  std::string hpar;
428  SiStripHistoId hidmanager;
429 
430  RingMEs theRingMEs;
431  theRingMEs.ClusterStoNCorrOnTrack = 0;
432  theRingMEs.ClusterChargeCorrOnTrack = 0;
433  theRingMEs.ClusterChargeOnTrack = 0;
434  theRingMEs.ClusterChargeOffTrack = 0;
435  theRingMEs.ClusterNoiseOnTrack = 0;
436  theRingMEs.ClusterNoiseOffTrack = 0;
437  theRingMEs.ClusterWidthOnTrack = 0;
438  theRingMEs.ClusterWidthOffTrack = 0;
439  theRingMEs.ClusterChargePerCMfromTrack = 0;
440  theRingMEs.ClusterChargePerCMfromOriginOnTrack = 0;
441  theRingMEs.ClusterChargePerCMfromOriginOffTrack = 0;
442 
443  hname = hidmanager.createHistoLayer("Summary_ClusterStoNCorr",name,ring_id,"OnTrack");
444  hpar = "TH1ClusterStoNCorr";
445  theRingMEs.ClusterStoNCorrOnTrack = handleBookMEs(ibooker,view,ring_id,hpar,hname);
446 
447  // Cluster Charge Corrected
448  hname = hidmanager.createHistoLayer("Summary_ClusterChargeCorr",name,ring_id,"OnTrack");
449  hpar = "TH1ClusterChargeCorr";
450  theRingMEs.ClusterChargeCorrOnTrack = handleBookMEs(ibooker,view,ring_id,hpar,hname);
451 
452  // Cluster Charge (On and Off Track)
453  hname = hidmanager.createHistoLayer("Summary_ClusterCharge",name,ring_id,"OnTrack");
454  hpar = "TH1ClusterCharge";
455  theRingMEs.ClusterChargeOnTrack = handleBookMEs(ibooker,view,ring_id,hpar,hname);
456 
457  hname = hidmanager.createHistoLayer("Summary_ClusterCharge",name,ring_id,"OffTrack");
458  hpar = "TH1ClusterCharge";
459  theRingMEs.ClusterChargeOffTrack = handleBookMEs(ibooker,view,ring_id,hpar,hname);
460 
461  // Cluster Noise (On and Off Track)
462  hname = hidmanager.createHistoLayer("Summary_ClusterNoise",name,ring_id,"OnTrack");
463  hpar = "TH1ClusterNoise";
464  theRingMEs.ClusterNoiseOnTrack = handleBookMEs(ibooker,view,ring_id,hpar,hname);
465 
466  hname = hidmanager.createHistoLayer("Summary_ClusterNoise",name,ring_id,"OffTrack");
467  hpar = "TH1ClusterNoise";
468  theRingMEs.ClusterNoiseOffTrack = handleBookMEs(ibooker,view,ring_id,hpar,hname);
469 
470  // Cluster Width (On and Off Track)
471  hname = hidmanager.createHistoLayer("Summary_ClusterWidth",name,ring_id,"OnTrack");
472  hpar = "TH1ClusterWidth";
473  theRingMEs.ClusterWidthOnTrack = handleBookMEs(ibooker,view,ring_id,hpar,hname);
474 
475  hname = hidmanager.createHistoLayer("Summary_ClusterWidth",name,ring_id,"OffTrack");
476  hpar = "TH1ClusterWidth";
477  theRingMEs.ClusterWidthOffTrack = handleBookMEs(ibooker,view,ring_id,hpar,hname);
478 
479  // dQ/dx
480  hname = hidmanager.createHistoLayer("Summary_ClusterChargePerCMfromTrack",name,ring_id,"");
481  hpar = "TH1ClusterChargePerCM";
482  theRingMEs.ClusterChargePerCMfromTrack = handleBookMEs(ibooker,view,ring_id,hpar,hname);
483 
484  hname = hidmanager.createHistoLayer("Summary_ClusterChargePerCMfromOrigin",name,ring_id,"OnTrack");
485  hpar = "TH1ClusterChargePerCM";
486  theRingMEs.ClusterChargePerCMfromOriginOnTrack = handleBookMEs(ibooker,view,ring_id,hpar,hname);
487 
488  hname = hidmanager.createHistoLayer("Summary_ClusterChargePerCMfromOrigin",name,ring_id,"OffTrack");
489  hpar = "TH1ClusterChargePerCM";
490  theRingMEs.ClusterChargePerCMfromOriginOffTrack = handleBookMEs(ibooker,view,ring_id,hpar,hname);
491 
492  //bookeeping
493  RingMEsMap[ring_id]=theRingMEs;
494 
495 }
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 500 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().

500  {
501 
503  subdet_tag = "__" + name;
504  std::string completeName;
505  std::string axisName;
506 
507  SubDetMEs theSubDetMEs;
508  theSubDetMEs.totNClustersOnTrack = 0;
509  theSubDetMEs.totNClustersOffTrack = 0;
510  theSubDetMEs.nClustersOnTrack = 0;
511  theSubDetMEs.nClustersTrendOnTrack = 0;
512  theSubDetMEs.nClustersOffTrack = 0;
513  theSubDetMEs.nClustersTrendOffTrack = 0;
514  theSubDetMEs.ClusterStoNCorrOnTrack = 0;
515  theSubDetMEs.ClusterChargeOnTrack = 0;
516  theSubDetMEs.ClusterChargeOffTrack = 0;
517  theSubDetMEs.ClusterStoNOffTrack = 0;
518  theSubDetMEs.ClusterChargePerCMfromTrack = 0;
519  theSubDetMEs.ClusterChargePerCMfromOriginOnTrack = 0;
520  theSubDetMEs.ClusterChargePerCMfromOriginOffTrack = 0;
521 
522  // TotalNumber of Cluster OnTrack
523  completeName = "Summary_TotalNumberOfClusters_OnTrack" + subdet_tag;
524  axisName = "Number of on-track clusters in " + name;
525  theSubDetMEs.nClustersOnTrack = bookME1D(ibooker , "TH1nClustersOn", completeName.c_str());
526  theSubDetMEs.nClustersOnTrack->setAxisTitle(axisName.c_str());
527  theSubDetMEs.nClustersOnTrack->getTH1()->StatOverflows(kTRUE);
528 
529  // TotalNumber of Cluster OffTrack
530  completeName = "Summary_TotalNumberOfClusters_OffTrack" + subdet_tag;
531  axisName = "Number of off-track clusters in " + name;
532  theSubDetMEs.nClustersOffTrack = bookME1D(ibooker , "TH1nClustersOff", completeName.c_str());
533  theSubDetMEs.nClustersOffTrack->setAxisTitle(axisName.c_str());
534  theSubDetMEs.nClustersOffTrack->getTH1()->StatOverflows(kTRUE);
535 
536  // Cluster StoN On Track
537  completeName = "Summary_ClusterStoNCorr_OnTrack" + subdet_tag;
538  theSubDetMEs.ClusterStoNCorrOnTrack = bookME1D(ibooker , "TH1ClusterStoNCorr", completeName.c_str());
539 
540  // Cluster Charge On Track
541  completeName = "Summary_ClusterCharge_OnTrack" + subdet_tag;
542  theSubDetMEs.ClusterChargeOnTrack=bookME1D(ibooker , "TH1ClusterCharge", completeName.c_str());
543 
544  // Cluster Charge Off Track
545  completeName = "Summary_ClusterCharge_OffTrack" + subdet_tag;
546  theSubDetMEs.ClusterChargeOffTrack=bookME1D(ibooker , "TH1ClusterCharge", completeName.c_str());
547 
548  // Cluster Charge StoN Off Track
549  completeName = "Summary_ClusterStoN_OffTrack" + subdet_tag;
550  theSubDetMEs.ClusterStoNOffTrack = bookME1D(ibooker , "TH1ClusterStoN", completeName.c_str());
551 
552  // cluster charge per cm on track
553  completeName = "Summary_ClusterChargePerCMfromTrack" + subdet_tag;
554  theSubDetMEs.ClusterChargePerCMfromTrack=bookME1D(ibooker , "TH1ClusterChargePerCM", completeName.c_str());
555 
556  // cluster charge per cm on track
557  completeName = "Summary_ClusterChargePerCMfromOrigin_OnTrack" + subdet_tag;
558  theSubDetMEs.ClusterChargePerCMfromOriginOnTrack=bookME1D(ibooker , "TH1ClusterChargePerCM", completeName.c_str());
559 
560  // cluster charge per cm off track
561  completeName = "Summary_ClusterChargePerCMfromOrigin_OffTrack" + subdet_tag;
562  theSubDetMEs.ClusterChargePerCMfromOriginOffTrack=bookME1D(ibooker , "TH1ClusterChargePerCM", completeName.c_str());
563 
564  if(Trend_On_){
565  // TotalNumber of Cluster
566  completeName = "Trend_TotalNumberOfClusters_OnTrack" + subdet_tag;
567  theSubDetMEs.nClustersTrendOnTrack = bookMETrend(ibooker , completeName.c_str());
568  completeName = "Trend_TotalNumberOfClusters_OffTrack" + subdet_tag;
569  theSubDetMEs.nClustersTrendOffTrack = bookMETrend(ibooker , completeName.c_str());
570  }
571 
572  //bookeeping
573  SubDetMEsMap[name]=theSubDetMEs;
574 
575 }
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 1017 of file SiStripMonitorTrack.cc.

References TkHistoMap::add(), applyClusterQuality_, 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, conf_, SiStripHistoId::createHistoId(), SiStripClusterInfo::detId(), eventNb, TkHistoMap::fill(), fillME(), edm::ParameterSet::getParameter(), i, SiStripMonitorTrack::Det2MEs::iLayer, SiStripMonitorTrack::Det2MEs::iRing, SiStripMonitorTrack::Det2MEs::iSubdet, LogDebug, PV3DBase< T, PVType, FrameType >::mag(), SiStripClusterInfo::maxCharge(), SiStripClusterInfo::maxIndex(), Mod_On_, ModMEsMap, mergeVDriftHistosByStation::name, HLT_25ns14e33_v1_cff::noise, SiStripClusterInfo::noiseRescaledByGain(), NULL, OffTrack, OnTrack, position, SiStripClusterInfo::signalOverNoise(), sToNLowerLimit_, sToNUpperLimit_, AlCaHLTBitMon_QueryRunRegistry::string, SiStripClusterInfo::stripCharges(), tkgeom_, tkhisto_NumOffTrack, tkhisto_NumOnTrack, tkhisto_StoNCorrOnTrack, TkHistoMap_On_, GeomDet::toLocal(), SiStripMonitorTrack::SubDetMEs::totNClustersOffTrack, SiStripMonitorTrack::SubDetMEs::totNClustersOnTrack, SiStripClusterInfo::width(), create_public_lumi_plots::width, widthLowerLimit_, widthUpperLimit_, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by AllClusters(), and RecHitInfo().

1018 {
1019 
1020  if (cluster==NULL) return false;
1021  // if one imposes a cut on the clusters, apply it
1022  if( (applyClusterQuality_) &&
1023  (cluster->signalOverNoise() < sToNLowerLimit_ ||
1024  cluster->signalOverNoise() > sToNUpperLimit_ ||
1025  cluster->width() < widthLowerLimit_ ||
1026  cluster->width() > widthUpperLimit_) ) return false;
1027  // start of the analysis
1028 
1029  float cosRZ = -2;
1030  LogDebug("SiStripMonitorTrack")<< "\n\tLV " << LV.x() << " " << LV.y() << " " << LV.z() << " " << LV.mag() << std::endl;
1031  if (LV.mag()){
1032  cosRZ= fabs(LV.z())/LV.mag();
1033  LogDebug("SiStripMonitorTrack")<< "\n\t cosRZ " << cosRZ << std::endl;
1034  }
1035 
1036  // Filling SubDet/Layer Plots (on Track + off Track)
1037  float StoN = cluster->signalOverNoise();
1038  float noise = cluster->noiseRescaledByGain();
1039  uint16_t charge = cluster->charge();
1040  uint16_t width = cluster->width();
1041  float position = cluster->baryStrip();
1042 
1043  // new dE/dx (chargePerCM)
1044  // https://indico.cern.ch/event/342236/session/5/contribution/10/material/slides/0.pdf
1045  float dQdx_fromTrack = siStripClusterTools::chargePerCM(detid, *cluster, LV);
1046  // from straigth line origin-sensor centre
1047  const StripGeomDetUnit* DetUnit = static_cast<const StripGeomDetUnit*>(tkgeom_->idToDetUnit(DetId(detid)));
1048  LocalPoint locVtx = DetUnit->toLocal(GlobalPoint(0.0, 0.0, 0.0));
1049  LocalVector locDir(locVtx.x(), locVtx.y(), locVtx.z());
1050  float dQdx_fromOrigin = siStripClusterTools::chargePerCM(detid, *cluster, locDir);
1051 
1052  if(flag==OnTrack){
1053  if (MEs.iSubdet != nullptr) MEs.iSubdet->totNClustersOnTrack++;
1054  // layerMEs
1055  if (MEs.iLayer != nullptr) {
1056  if(noise > 0.0) fillME(MEs.iLayer->ClusterStoNCorrOnTrack, StoN*cosRZ);
1057  if(noise == 0.0) LogDebug("SiStripMonitorTrack") << "Module " << detid << " in Event " << eventNb << " noise " << cluster->noiseRescaledByGain() << std::endl;
1058  fillME(MEs.iLayer->ClusterChargeCorrOnTrack, charge*cosRZ);
1059  fillME(MEs.iLayer->ClusterChargeOnTrack, charge);
1060  fillME(MEs.iLayer->ClusterNoiseOnTrack, noise);
1061  fillME(MEs.iLayer->ClusterWidthOnTrack, width);
1062  fillME(MEs.iLayer->ClusterPosOnTrack, position);
1063  fillME(MEs.iLayer->ClusterChargePerCMfromTrack, dQdx_fromTrack);
1064  fillME(MEs.iLayer->ClusterChargePerCMfromOriginOnTrack, dQdx_fromOrigin);
1065  }
1066  // ringMEs
1067  if (MEs.iRing != nullptr) {
1068  if(noise > 0.0) fillME(MEs.iRing->ClusterStoNCorrOnTrack, StoN*cosRZ);
1069  if(noise == 0.0) LogDebug("SiStripMonitorTrack") << "Module " << detid << " in Event " << eventNb << " noise " << cluster->noiseRescaledByGain() << std::endl;
1070  fillME(MEs.iRing->ClusterChargeCorrOnTrack, charge*cosRZ);
1071  fillME(MEs.iRing->ClusterChargeOnTrack, charge);
1072  fillME(MEs.iRing->ClusterNoiseOnTrack, noise);
1073  fillME(MEs.iRing->ClusterWidthOnTrack, width);
1074  fillME(MEs.iRing->ClusterChargePerCMfromTrack, dQdx_fromTrack);
1075  fillME(MEs.iRing->ClusterChargePerCMfromOriginOnTrack, dQdx_fromOrigin);
1076  }
1077  // subdetMEs
1078  if(MEs.iSubdet != nullptr){
1079  fillME(MEs.iSubdet->ClusterChargeOnTrack,charge);
1080  if(noise > 0.0) fillME(MEs.iSubdet->ClusterStoNCorrOnTrack,StoN*cosRZ);
1081  fillME(MEs.iSubdet->ClusterChargePerCMfromTrack,dQdx_fromTrack);
1082  fillME(MEs.iSubdet->ClusterChargePerCMfromOriginOnTrack,dQdx_fromOrigin);
1083  }
1084  //******** TkHistoMaps
1085  if (TkHistoMap_On_) {
1086  uint32_t adet=cluster->detId();
1087  tkhisto_NumOnTrack->add(adet,1.);
1088  if(noise > 0.0) tkhisto_StoNCorrOnTrack->fill(adet,cluster->signalOverNoise()*cosRZ);
1089  if(noise == 0.0)
1090  LogDebug("SiStripMonitorTrack") << "Module " << detid << " in Event " << eventNb << " noise " << noise << std::endl;
1091  }
1092  // Module plots filled only for onTrack Clusters
1093  if(Mod_On_){
1094  SiStripHistoId hidmanager2;
1095  std::string name = hidmanager2.createHistoId("","det",detid);
1096  //fillModMEs
1097  std::map<std::string, ModMEs>::iterator iModME = ModMEsMap.find(name);
1098  if(iModME!=ModMEsMap.end()){
1099  if(noise > 0.0) fillME(iModME->second.ClusterStoNCorr ,StoN*cosRZ);
1100  if(noise == 0.0) LogDebug("SiStripMonitorTrack") << "Module " << name << " in Event " << eventNb << " noise " << noise << std::endl;
1101  fillME(iModME->second.ClusterCharge,charge);
1102 
1103  fillME(iModME->second.ClusterChargeCorr,charge*cosRZ);
1104 
1105  fillME(iModME->second.ClusterWidth ,width);
1106  fillME(iModME->second.ClusterPos ,position);
1107 
1108  fillME(iModME->second.ClusterChargePerCMfromTrack, dQdx_fromTrack);
1109  fillME(iModME->second.ClusterChargePerCMfromOrigin, dQdx_fromOrigin);
1110 
1111  //fill the PGV histo
1112  float PGVmax = cluster->maxCharge();
1113  int PGVposCounter = cluster->maxIndex();
1114  for (int i= int(conf_.getParameter<edm::ParameterSet>("TProfileClusterPGV").getParameter<double>("xmin"));i<PGVposCounter;++i)
1115  fillME(iModME->second.ClusterPGV, i,0.);
1116  for (auto it=cluster->stripCharges().begin();it<cluster->stripCharges().end();++it) {
1117  fillME(iModME->second.ClusterPGV, PGVposCounter++,(*it)/PGVmax);
1118  }
1119  for (int i= PGVposCounter;i<int(conf_.getParameter<edm::ParameterSet>("TProfileClusterPGV").getParameter<double>("xmax"));++i)
1120  fillME(iModME->second.ClusterPGV, i,0.);
1121  //end fill the PGV histo
1122  }
1123  }
1124  } else {
1125  if (flag == OffTrack) {
1126  if (MEs.iSubdet != nullptr) MEs.iSubdet->totNClustersOffTrack++;
1127  //******** TkHistoMaps
1128  if (TkHistoMap_On_) {
1129  uint32_t adet=cluster->detId();
1130  tkhisto_NumOffTrack->add(adet,1.);
1131  if(charge > 250){
1132  LogDebug("SiStripMonitorTrack") << "Module firing " << detid << " in Event " << eventNb << std::endl;
1133  }
1134  }
1135  }
1136  // layerMEs
1137  if (MEs.iLayer != nullptr) {
1138  fillME(MEs.iLayer->ClusterChargeOffTrack, charge);
1139  fillME(MEs.iLayer->ClusterNoiseOffTrack, noise);
1140  fillME(MEs.iLayer->ClusterWidthOffTrack, width);
1141  fillME(MEs.iLayer->ClusterPosOffTrack, position);
1142  fillME(MEs.iLayer->ClusterChargePerCMfromOriginOffTrack, dQdx_fromOrigin);
1143  }
1144  // ringMEs
1145  if (MEs.iRing != nullptr) {
1146  fillME(MEs.iRing->ClusterChargeOffTrack, charge);
1147  fillME(MEs.iRing->ClusterNoiseOffTrack, noise);
1148  fillME(MEs.iRing->ClusterWidthOffTrack, width);
1149  fillME(MEs.iRing->ClusterChargePerCMfromOriginOffTrack, dQdx_fromOrigin);
1150  }
1151  // subdetMEs
1152  if(MEs.iSubdet != nullptr){
1153  fillME(MEs.iSubdet->ClusterChargeOffTrack,charge);
1154  if(noise > 0.0) fillME(MEs.iSubdet->ClusterStoNOffTrack,StoN);
1155  fillME(MEs.iSubdet->ClusterChargePerCMfromOriginOffTrack,dQdx_fromOrigin);
1156  }
1157  }
1158  return true;
1159 }
#define LogDebug(id)
uint8_t maxCharge() const
T getParameter(std::string const &) const
int i
Definition: DBlmapReader.cc:9
TkHistoMap * tkhisto_NumOffTrack
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
#define NULL
Definition: scimark2.h:8
uint16_t maxIndex() const
auto stripCharges() const -> decltype(cluster() ->amplitudes())
edm::ESHandle< TrackerGeometry > tkgeom_
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
Definition: DetId.h:18
std::string createHistoId(std::string description, std::string id_type, uint32_t component_id)
std::map< std::string, ModMEs > ModMEsMap
TkHistoMap * tkhisto_NumOnTrack
uint32_t detId() const
static int position[264][3]
Definition: ReadPGInfo.cc:509
TkHistoMap * tkhisto_StoNCorrOnTrack
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 67 of file SiStripMonitorTrack.cc.

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

68 {
69  //get geom
71  LogDebug("SiStripMonitorTrack") << "[SiStripMonitorTrack::beginRun] There are "<<tkgeom_->detUnits().size() <<" detectors instantiated in the geometry" << std::endl;
73 
74 
75  // Initialize the GenericTriggerEventFlag
77 }
#define LogDebug(id)
edm::ESHandle< SiStripDetCabling > SiStripDetCabling_
edm::ESHandle< TrackerGeometry > tkgeom_
const T & get() const
Definition: EventSetup.h:56
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(), and clusterInfos().

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)
SiStripMonitorTrack::Det2MEs SiStripMonitorTrack::findMEs ( const TrackerTopology tTopo,
const uint32_t  detid 
)
private

Definition at line 985 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().

985  {
986  SiStripHistoId hidmanager1;
987 
988  std::string layer_id = hidmanager1.getSubdetid(detid, tTopo, false);
989  std::string ring_id = hidmanager1.getSubdetid(detid, tTopo, true);
990  std::string sdet_tag = folderOrganizer_.getSubDetFolderAndTag(detid, tTopo).second;
991 
992  Det2MEs me;
993  me.iLayer = nullptr;
994  me.iRing = nullptr;
995  me.iSubdet = nullptr;
996 
997  std::map<std::string, LayerMEs>::iterator iLayer = LayerMEsMap.find(layer_id);
998  if (iLayer != LayerMEsMap.end()) {
999  me.iLayer = &(iLayer->second);
1000  }
1001 
1002  std::map<std::string, RingMEs>::iterator iRing = RingMEsMap.find(ring_id);
1003  if (iRing != RingMEsMap.end()) {
1004  me.iRing = &(iRing->second);
1005  }
1006 
1007  std::map<std::string, SubDetMEs>::iterator iSubdet = SubDetMEsMap.find(sdet_tag);
1008  if (iSubdet != SubDetMEsMap.end()) {
1009  me.iSubdet = &(iSubdet->second);
1010  }
1011 
1012  return me;
1013 }
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 313 of file SiStripMonitorTrack.cc.

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

Referenced by bookLayerMEs(), and bookRingMEs().

313  {
314 
315  MonitorElement* me = NULL;
316  bool view = false;
317  view = (conf_.getParameter<edm::ParameterSet>(histoParameters.c_str())).getParameter<bool>(viewParameter.c_str());
318  if ( id.find("TEC") == std::string::npos && id.find("TID") == std::string::npos ) {
319  me = bookME1D(ibooker , histoParameters.c_str(), histoName.c_str());
320  } else {
321  if (view) {
322  // histoName = histoName + "__" + thickness;
323  me = bookME1D(ibooker , histoParameters.c_str(), histoName.c_str());
324  }
325  }
326  return me;
327 }
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 726 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().

732  {
733  LocalVector statedirection;
734  if(matchedhit){ // type=Matched;
735  LogTrace("SiStripMonitorTrack")<<"\nMatched recHit found"<< std::endl;
736 
737  const GluedGeomDet * gdet=static_cast<const GluedGeomDet *>(tkgeom_->idToDet(matchedhit->geographicalId()));
738 
739  GlobalVector gtrkdirup=gdet->toGlobal(localMomentum);
740 
741  //mono side
742  const GeomDetUnit * monodet=gdet->monoDet();
743  statedirection=monodet->toLocal(gtrkdirup);
744  SiStripRecHit2D m = matchedhit->monoHit();
745  if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(&m,statedirection,es);
746 
747  //stereo side
748  const GeomDetUnit * stereodet=gdet->stereoDet();
749  statedirection=stereodet->toLocal(gtrkdirup);
750  SiStripRecHit2D s = matchedhit->stereoHit();
751  if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(&s,statedirection,es);
752  }
753  else if(projhit){ // type=Projected;
754  LogTrace("SiStripMonitorTrack")<<"\nProjected recHit found"<< std::endl;
755 
756  const GluedGeomDet * gdet=static_cast<const GluedGeomDet *>(tkgeom_->idToDet(projhit->geographicalId()));
757 
758  GlobalVector gtrkdirup=gdet->toGlobal(localMomentum);
759  const SiStripRecHit2D originalhit=projhit->originalHit();
760 
761  const GeomDetUnit * det;
762  if(!StripSubdetector(originalhit.geographicalId().rawId()).stereo()){
763  //mono side
764  LogTrace("SiStripMonitorTrack")<<"\nProjected recHit found MONO"<< std::endl;
765  det=gdet->monoDet();
766  statedirection=det->toLocal(gtrkdirup);
767  if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(&(originalhit),statedirection,es);
768  }
769  else{
770  LogTrace("SiStripMonitorTrack")<<"\nProjected recHit found STEREO"<< std::endl;
771  //stereo side
772  det=gdet->stereoDet();
773  statedirection=det->toLocal(gtrkdirup);
774  if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(&(originalhit),statedirection,es);
775  }
776  } else if (hit2D){ // type=2D
777  statedirection=localMomentum;
778  if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(hit2D,statedirection,es);
779  } else if (hit1D) { // type=1D
780  statedirection=localMomentum;
781  if(statedirection.mag()) RecHitInfo<SiStripRecHit1D>(hit1D,statedirection,es);
782  } else {
783  LogDebug ("SiStripMonitorTrack")
784  << " LocalMomentum: "<<statedirection
785  << "\nLocal x-z plane angle: "<<atan2(statedirection.x(),statedirection.z());
786  }
787 
788 }
#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 909 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().

909  {
910 
911  if(!tkrecHit->isValid()){
912  LogTrace("SiStripMonitorTrack") <<"\t\t Invalid Hit " << std::endl;
913  return;
914  }
915 
916  const uint32_t& detid = tkrecHit->geographicalId().rawId();
917 
918  LogTrace("SiStripMonitorTrack")
919  <<"\n\t\tRecHit on det "<<detid
920  <<"\n\t\tRecHit in LP "<<tkrecHit->localPosition()
921  <<"\n\t\tRecHit in GP "<<tkgeom_->idToDet(tkrecHit->geographicalId())->surface().toGlobal(tkrecHit->localPosition())
922  <<"\n\t\tRecHit trackLocal vector "<<LV.x() << " " << LV.y() << " " << LV.z() <<std::endl;
923 
924 
925  //Retrieve tracker topology from geometry
926  edm::ESHandle<TrackerTopology> tTopoHandle;
927  es.get<TrackerTopologyRcd>().get(tTopoHandle);
928  const TrackerTopology* const tTopo = tTopoHandle.product();
929 
930  //Get SiStripCluster from SiStripRecHit
931  if ( tkrecHit != NULL ){
932  const SiStripCluster* SiStripCluster_ = &*(tkrecHit->cluster());
933  SiStripClusterInfo SiStripClusterInfo_(*SiStripCluster_,es,detid);
934 
935  const Det2MEs MEs = findMEs(tTopo, detid);
936  if (clusterInfos(&SiStripClusterInfo_,detid, OnTrack, LV, MEs))
937  {
938  vPSiStripCluster.insert(SiStripCluster_);
939  }
940  }
941  else
942  {
943  edm::LogError("SiStripMonitorTrack") << "NULL hit" << std::endl;
944  }
945  }
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:56
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 790 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().

790  {
791 
792 using namespace std;
793 using namespace edm;
794 using namespace reco;
795 
796  // trajectory input
797  edm::Handle<TrajTrackAssociationCollection> TItkAssociatorCollection;
798  ev.getByToken(trackTrajToken_, TItkAssociatorCollection);
799  if( TItkAssociatorCollection.isValid()){
800  trackStudyFromTrajectory(TItkAssociatorCollection,es);
801  } else {
802  edm::LogError("SiStripMonitorTrack")<<"Association not found ... try w/ track collection"<<std::endl;
803 
804  // edm::Handle<std::vector<Trajectory> > trajectories;
805  // ev.getByToken(trajectoryToken_, trajectories);
806 
807  // track input
808  edm::Handle<reco::TrackCollection > trackCollectionHandle;
809  ev.getByToken(trackToken_, trackCollectionHandle);//takes the track collection
810  if (trackCollectionHandle.isValid()){
811  trackStudyFromTrack(trackCollectionHandle,es);
812  } else {
813  edm::LogError("SiStripMonitorTrack")<<"also Track Collection is not valid !! " << TrackLabel_<<std::endl;
814  return;
815  }
816  }
817 }
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:464
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 819 of file SiStripMonitorTrack.cc.

References DetId::det(), hitStudy(), HLT_25ns14e33_v3_cff::trackCollection, and DetId::Tracker.

Referenced by trackStudy().

819  {
820 
821  // edm::ESHandle<TransientTrackBuilder> builder;
822  // es.get<TransientTrackRecord>().get("TransientTrackBuilder",builder);
823  // const TransientTrackBuilder* transientTrackBuilder = builder.product();
824 
825  reco::TrackCollection trackCollection = *trackCollectionHandle;
826  for (reco::TrackCollection::const_iterator track = trackCollection.begin(), etrack = trackCollection.end();
827  track!=etrack; ++track) {
828 
829  // const reco::TransientTrack transientTrack = transientTrackBuilder->build(track);
830 
831 
832  for (trackingRecHit_iterator hit = track->recHitsBegin(), ehit = track->recHitsEnd();
833  hit!=ehit; ++hit) {
834  if (!(*hit)->isValid()) continue;
835  DetId detID = (*hit)->geographicalId();
836  if (detID.det() != DetId::Tracker) continue;
837  const TrackingRecHit* theHit = (*hit);
838  const ProjectedSiStripRecHit2D* projhit = dynamic_cast<const ProjectedSiStripRecHit2D*>( (theHit) );
839  const SiStripMatchedRecHit2D* matchedhit = dynamic_cast<const SiStripMatchedRecHit2D*> ( (theHit) );
840  const SiStripRecHit2D* hit2D = dynamic_cast<const SiStripRecHit2D*> ( (theHit) );
841  const SiStripRecHit1D* hit1D = dynamic_cast<const SiStripRecHit1D*> ( (theHit) );
842 
843  // GlobalPoint globalPoint = hit->globalPosition();
844  // reco::TrajectoryStateOnSurface stateOnSurface = transientTrack->stateOnSurface(globalPoint);
845 
846  LocalVector localMomentum;
847  hitStudy(es,projhit,matchedhit,hit2D,hit1D,localMomentum);
848  }
849 
850  // hit pattern of the track
851  // const reco::HitPattern & hitsPattern = track->hitPattern();
852  // loop over the hits of the track
853  // for (int i=0; i<hitsPattern.numberOfHits(); i++) {
854  // for (int i=0; i<hitsPattern.numberOfHits(reco::HitPattern::TRACK_HITS); i++) {
855  // uint32_t hit = hitsPattern.getHitPattern(reco::HitPattern::TRACK_HITS,i);
856 
857  // if the hit is valid and in pixel barrel, print out the layer
858  // if (hitsPattern.validHitFilter(hit) && hitsPattern.pixelBarrelHitFilter(hit))
859 
860  // if (!hitsPattern.validHitFilter(hit)) continue;
861 // if (hitsPattern.pixelHitFilter(hit)) std::cout << "pixel" << std::endl; // pixel
862 // if (hitsPattern.pixelBarrelHitFilter(hit)) std::cout << "pixel barrel" << std::endl; // pixel barrel
863 // if (hitsPattern.pixelEndcapHitFilter(hit)) std::cout << "pixel endcap" << std::endl; // pixel endcap
864 // if (hitsPattern.stripHitFilter(hit)) std::cout << "strip" << std::endl; // strip
865 // if (hitsPattern.stripTIBHitFilter(hit)) std::cout << "TIB" << std::endl; // strip TIB
866 // if (hitsPattern.stripTIDHitFilter(hit)) std::cout << "TID" << std::endl; // strip TID
867 // if (hitsPattern.stripTOBHitFilter(hit)) std::cout << "TOB" << std::endl; // strip TOB
868 // if (hitsPattern.stripTECHitFilter(hit)) std::cout << "TEC" << std::endl; // strip TEC
869 // if (hitsPattern.muonDTHitFilter(hit)) std::cout << "DT" << std::endl; // muon DT
870 // if (hitsPattern.muonCSCHitFilter(hit)) std::cout << "CSC" << std::endl; // muon CSC
871 // if (hitsPattern.muonRPCHitFilter(hit)) std::cout << "RPC" << std::endl; // muon RPC
872 //
873 // // expert level: printout the hit in 10-bit binary format
874 // std::cout << "hit in 10-bit binary format = ";
875 // for (int j=9; j>=0; j--) {
876 // int bit = (hit >> j) & 0x1;
877 // std::cout << bit;
878 // }
879 // std::cout << std::endl;
880  // }
881  }
882 }
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:14
Definition: DetId.h:18
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
void SiStripMonitorTrack::trackStudyFromTrajectory ( edm::Handle< TrajTrackAssociationCollection TItkAssociatorCollection,
const edm::EventSetup es 
)
private

Definition at line 884 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().

884  {
885  //Perform track study
886  int i=0;
887  for(TrajTrackAssociationCollection::const_iterator it = TItkAssociatorCollection->begin();it != TItkAssociatorCollection->end(); ++it){
888  const edm::Ref<std::vector<Trajectory> > traj_iterator = it->key;
889 
890  // Trajectory Map, extract Trajectory for this track
891  //reco::TrackRef trackref = it->val;
892  LogDebug("SiStripMonitorTrack")
893  << "Track number "<< ++i << std::endl;
894  // << "\n\tmomentum: " << trackref->momentum()
895  // << "\n\tPT: " << trackref->pt()
896  // << "\n\tvertex: " << trackref->vertex()
897  // << "\n\timpact parameter: " << trackref->d0()
898  // << "\n\tcharge: " << trackref->charge()
899  // << "\n\tnormalizedChi2: " << trackref->normalizedChi2()
900  // <<"\n\tFrom EXTRA : "
901  // <<"\n\t\touter PT "<< trackref->outerPt()<<std::endl;
902 
903  // trajectoryStudy(traj_iterator,trackref,es);
904  trajectoryStudy(traj_iterator,es);
905 
906  }
907 }
#define LogDebug(id)
int i
Definition: DBlmapReader.cc:9
key_type key() const
Accessor for product key.
Definition: Ref.h:264
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 650 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().

650  {
651  const std::vector<TrajectoryMeasurement> & measurements = traj->measurements();
652  for(std::vector<TrajectoryMeasurement>::const_iterator traj_mes_iterator= measurements.begin(), traj_mes_end=measurements.end();
653  traj_mes_iterator!=traj_mes_end;++traj_mes_iterator){//loop on measurements
654  //trajectory local direction and position on detector
655  LocalVector statedirection;
656 
657  TrajectoryStateOnSurface updatedtsos=traj_mes_iterator->updatedState();
658  ConstRecHitPointer ttrh=traj_mes_iterator->recHit();
659 
660  if (!ttrh->isValid()) continue;
661 
662  const ProjectedSiStripRecHit2D* projhit = dynamic_cast<const ProjectedSiStripRecHit2D*>( ttrh->hit() );
663  const SiStripMatchedRecHit2D* matchedhit = dynamic_cast<const SiStripMatchedRecHit2D*>( ttrh->hit() );
664  const SiStripRecHit2D* hit2D = dynamic_cast<const SiStripRecHit2D*>( ttrh->hit() );
665  const SiStripRecHit1D* hit1D = dynamic_cast<const SiStripRecHit1D*>( ttrh->hit() );
666 
667  // RecHitType type=Single;
668 
669  if(matchedhit){
670  LogTrace("SiStripMonitorTrack")<<"\nMatched recHit found"<< std::endl;
671  // type=Matched;
672 
673  const GluedGeomDet * gdet=static_cast<const GluedGeomDet *>(tkgeom_->idToDet(matchedhit->geographicalId()));
674  GlobalVector gtrkdirup=gdet->toGlobal(updatedtsos.localMomentum());
675  //mono side
676  const GeomDetUnit * monodet=gdet->monoDet();
677  statedirection=monodet->toLocal(gtrkdirup);
678  SiStripRecHit2D m = matchedhit->monoHit();
679  // if(statedirection.mag() != 0) RecHitInfo<SiStripRecHit2D>(&m,statedirection,trackref,es);
680  if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(&m,statedirection,es);
681  //stereo side
682  const GeomDetUnit * stereodet=gdet->stereoDet();
683  statedirection=stereodet->toLocal(gtrkdirup);
684  SiStripRecHit2D s = matchedhit->stereoHit();
685  // if(statedirection.mag() != 0) RecHitInfo<SiStripRecHit2D>(&s,statedirection,trackref,es);
686  if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(&s,statedirection,es);
687  }
688  else if(projhit){
689  LogTrace("SiStripMonitorTrack")<<"\nProjected recHit found"<< std::endl;
690  // type=Projected;
691  const GluedGeomDet * gdet=static_cast<const GluedGeomDet *>(tkgeom_->idToDet(projhit->geographicalId()));
692 
693  GlobalVector gtrkdirup=gdet->toGlobal(updatedtsos.localMomentum());
694  const SiStripRecHit2D originalhit=projhit->originalHit();
695  const GeomDetUnit * det;
696  if(!StripSubdetector(originalhit.geographicalId().rawId()).stereo()){
697  //mono side
698  LogTrace("SiStripMonitorTrack")<<"\nProjected recHit found MONO"<< std::endl;
699  det=gdet->monoDet();
700  statedirection=det->toLocal(gtrkdirup);
701  if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(&(originalhit),statedirection,es);
702  }
703  else{
704  LogTrace("SiStripMonitorTrack")<<"\nProjected recHit found STEREO"<< std::endl;
705  //stereo side
706  det=gdet->stereoDet();
707  statedirection=det->toLocal(gtrkdirup);
708  if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(&(originalhit),statedirection,es);
709  }
710  }else if (hit2D){
711  statedirection=updatedtsos.localMomentum();
712  if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(hit2D,statedirection,es);
713  } else if (hit1D) {
714  statedirection=updatedtsos.localMomentum();
715  if(statedirection.mag()) RecHitInfo<SiStripRecHit1D>(hit1D,statedirection,es);
716  } else {
717  LogDebug ("SiStripMonitorTrack")
718  << " LocalMomentum: "<<statedirection
719  << "\nLocal x-z plane angle: "<<atan2(statedirection.x(),statedirection.z());
720  }
721 
722  }
723 
724 }
#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(), and clusterInfos().

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 clusterInfos().

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().