45 : conf_(iConfig), show_mechanical_structure_view(
true), show_readout_view(
false), show_control_view(
false), select_all_detectors(
false), reset_each_run(
false), m_cacheID_(0)
155 k0 = ClusterMultiplicityRegions.getParameter<
double>(
"k0");
156 q0 = ClusterMultiplicityRegions.getParameter<
double>(
"q0");
157 dk0 = ClusterMultiplicityRegions.getParameter<
double>(
"dk0");
158 maxClus = ClusterMultiplicityRegions.getParameter<
double>(
"MaxClus");
159 minPix = ClusterMultiplicityRegions.getParameter<
double>(
"MinPix");
244 std::vector<uint32_t> activeDets;
268 edm::LogInfo(
"SiStripTkDQM|SiStripMonitorCluster")<<
"nr. of activeDets: "<<activeDets.size();
269 for(std::vector<uint32_t>::iterator detid_iterator = activeDets.begin(); detid_iterator!=activeDets.end(); detid_iterator++){
270 uint32_t detid = (*detid_iterator);
273 activeDets.erase(detid_iterator);
284 ModuleMEsMap.insert( std::make_pair(detid, mod_single));
288 std::pair<std::string,int32_t> det_layer_pair = folder_organizer.
GetSubDetAndLayer(detid, tTopo);
292 std::map<std::string, LayerMEs>::iterator iLayerME =
LayerMEsMap.find(label);
296 int32_t lnumber = det_layer_pair.second;
297 std::vector<uint32_t> layerDetIds;
298 if (det_layer_pair.first ==
"TIB") {
300 }
else if (det_layer_pair.first ==
"TOB") {
302 }
else if (det_layer_pair.first ==
"TID" && lnumber > 0) {
304 }
else if (det_layer_pair.first ==
"TID" && lnumber < 0) {
306 }
else if (det_layer_pair.first ==
"TEC" && lnumber > 0) {
308 }
else if (det_layer_pair.first ==
"TEC" && lnumber < 0) {
314 folder_organizer.
setLayerFolder(detid,tTopo,det_layer_pair.second);
419 const char*
HistoName =
"StripClusVsBXandOrbit";
420 const char* HistoTitle =
"Strip cluster multiplicity vs BX mod(70) and Orbit;Event 1 BX mod(70);time [Orb#]";
423 ParametersNclusVsCycleTimeProf2D.
getParameter<int32_t>(
"Nbins"),
424 ParametersNclusVsCycleTimeProf2D.
getParameter<
double>(
"xmin"),
425 ParametersNclusVsCycleTimeProf2D.
getParameter<
double>(
"xmax"),
426 ParametersNclusVsCycleTimeProf2D.
getParameter<int32_t>(
"Nbinsy"),
427 ParametersNclusVsCycleTimeProf2D.
getParameter<
double>(
"ymin"),
428 ParametersNclusVsCycleTimeProf2D.
getParameter<
double>(
"ymax"),
435 const char*
HistoName =
"ClusterWidths_vs_Amplitudes";
436 const char* HistoTitle =
"Cluster widths vs amplitudes;Amplitudes (integrated ADC counts);Cluster widths";
438 ParametersClusWidthVsAmpTH2.
getParameter<int32_t>(
"Nbinsx"),
439 ParametersClusWidthVsAmpTH2.
getParameter<
double>(
"xmin"),
440 ParametersClusWidthVsAmpTH2.
getParameter<
double>(
"xmax"),
441 ParametersClusWidthVsAmpTH2.
getParameter<int32_t>(
"Nbinsy"),
442 ParametersClusWidthVsAmpTH2.
getParameter<
double>(
"ymin"),
443 ParametersClusWidthVsAmpTH2.
getParameter<
double>(
"ymax"));
458 HistoName =
"NumberOfClustersInStrip";
478 edm::LogInfo(
"SiStripMonitorCluster") <<
"SiStripMonitorCluster::bookHistograms: "
479 <<
" Creating MEs for new Cabling ";
484 edm::LogInfo(
"SiStripMonitorCluster") <<
"SiStripMonitorCluster::bookHistograms: "
485 <<
" Resetting MEs ";
514 int NPixClusters=0, NStripClusters=0, MultiplicityRegion=0;
515 bool isPixValid=
false;
536 if (!cluster_detsetvektor.
isValid())
return;
539 NStripClusters= StrC->
data().size();
541 if (cluster_detsetvektor_pix.
isValid()){
545 MultiplicityRegion=
FindRegion(NStripClusters,NPixClusters);
561 for (std::map<std::string, SubDetMEs>::iterator iSubdet =
SubDetMEsMap.begin();
563 iSubdet->second.totNClusters = 0;
567 bool found_layer_me =
false;
573 int ncluster_layer = 0;
574 std::map<std::string, LayerMEs>::iterator iLayerME =
LayerMEsMap.find(layer_label);
579 layer_single = iLayerME->second;
580 found_layer_me =
true;
583 bool found_module_me =
false;
587 for (std::vector< uint32_t >::const_iterator iterDets = iterLayer->second.begin() ;
588 iterDets != iterLayer->second.end() ; iterDets++) {
591 uint32_t detid = (*iterDets);
594 if (subdet_label.size() == 0) subdet_label = folder_organizer.
getSubDetFolderAndTag(detid, tTopo).second;
599 std::map<uint32_t, ModMEs >::iterator imodME =
ModuleMEsMap.find(detid);
601 mod_single = imodME->second;
602 found_module_me =
true;
604 }
else found_module_me =
false;
608 if(isearch==cluster_detsetvektor->end()){
633 ncluster_layer += cluster_detset.
size();
635 short total_clusterized_strips = 0;
643 const auto & ampls = clusterIter->amplitudes();
645 float cluster_position = clusterIter->barycenter();
647 short cluster_start = clusterIter->firstStrip();
649 short cluster_width = ampls.size();
651 total_clusterized_strips = total_clusterized_strips + cluster_width;
656 float cluster_signal = 0.0;
657 float cluster_noise = 0.0;
658 int nrnonzeroamplitudes = 0;
661 for(uint iamp=0; iamp<ampls.size(); iamp++){
663 cluster_signal += ampls[iamp];
664 if(!qualityHandle->IsStripBad(qualityRange, clusterIter->firstStrip()+iamp)){
665 noise = noiseHandle->getNoise(clusterIter->firstStrip()+iamp,detNoiseRange)/gainHandle->getStripGain(clusterIter->firstStrip()+iamp, detGainRange);
667 noise2 += noise*
noise;
668 nrnonzeroamplitudes++;
672 if (nrnonzeroamplitudes > 0) cluster_noise =
sqrt(noise2/nrnonzeroamplitudes);
681 cluster_properties.
charge = cluster_signal;
682 cluster_properties.
position = cluster_position;
683 cluster_properties.
start = cluster_start;
684 cluster_properties.
width = cluster_width;
685 cluster_properties.
noise = cluster_noise;
688 if (found_module_me)
fillModuleMEs(mod_single, cluster_properties);
691 if (found_layer_me) {
699 std::map<std::string, SubDetMEs>::iterator iSubdet =
SubDetMEsMap.find(subdet_label);
709 std::map<std::string, SubDetMEs>::iterator iSubdet =
SubDetMEsMap.find(subdet_label);
710 if(iSubdet !=
SubDetMEsMap.end()) iSubdet->second.SubDetClusWidthVsAmpTH2->Fill(cluster_signal, cluster_width);
720 float local_occupancy =
static_cast<float>(total_clusterized_strips)/static_cast<float>(total_nr_strips);
721 if (found_module_me) {
736 std::map<std::string, SubDetMEs>::iterator iSubdet =
SubDetMEsMap.find(subdet_label);
737 if(iSubdet !=
SubDetMEsMap.end()) iSubdet->second.totNClusters += ncluster_layer;
750 && apv_phase_collection.
isValid()
754 long long dbx = event_history->deltaBX();
755 long long tbx = event_history->absoluteBX();
757 bool global_histo_filled =
false;
758 bool MultiplicityRegion_Vs_APVcycle_filled=
false;
760 for (std::map<std::string, SubDetMEs>::iterator it =
SubDetMEsMap.begin();
767 long long tbx_corr = tbx;
776 tbx_corr -= the_phase;
777 long long dbxincycle = event_history->deltaBXinCycle(the_phase);
780 global_histo_filled =
true;
783 if (isPixValid && !MultiplicityRegion_Vs_APVcycle_filled){
786 MultiplicityRegion_Vs_APVcycle_filled=
true;
805 long long tbx_corr = tbx;
806 int the_phase = apv_phase_collection->getPhase(
"All");
813 tbx_corr -= the_phase;
823 std::map<uint32_t, ModMEs >::iterator pos =
ModuleMEsMap.find(idet);
824 ModMEs mod_me = pos->second;
849 hid = hidmanager.
createHistoId(
"NumberOfClusters",
"det",detid);
859 hid = hidmanager.
createHistoId(
"ClusterPosition",
"det",detid);
868 hid = hidmanager.
createHistoId(
"ClusterDigiPosition",
"det",detid);
900 hid = hidmanager.
createHistoId(
"ClusterSignalOverNoise",
"det",detid);
908 hid = hidmanager.
createHistoId(
"ClusterSignalOverNoiseVsPos",
"det",detid);
924 hid = hidmanager.
createHistoId(
"ClusterLocalOccupancy",
"det",detid);
932 hid = hidmanager.
createHistoId(
"NrOfClusterizedStrips",
"det",detid);
939 hid = hidmanager.
createHistoId(
"ClusterWidths_vs_Amplitudes",
"det",detid);
1053 HistoName =
"ClusterCharge__" +
label;
1060 HistoName =
"ClusterWidth__" +
label;
1067 HistoName =
"TotalNumberOfCluster__" +
label;
1075 HistoName =
"TotalNumberOfClusterProfile__" +
label;
1088 HistoName =
"Cluster_vs_ApvCycle__" +
label;
1103 HistoName =
"Cluster_vs_ApvCycle_2D__" +
label;
1105 double h2ymax = 9999.0;
1106 double yfact = Parameters.
getParameter<
double>(
"yfactor");
1107 if(label.find(
"TIB") != std::string::npos) h2ymax = (6984.*256.)*yfact;
1108 else if (label.find(
"TID") != std::string::npos) h2ymax = (2208.*256.)*yfact;
1109 else if (label.find(
"TOB") != std::string::npos) h2ymax = (12906.*256.)*yfact;
1110 else if (label.find(
"TEC") != std::string::npos) h2ymax = (7552.*2.*256.)*yfact;
1127 HistoName =
"ClusterWidths_vs_Amplitudes__" +
label;
1145 HistoName =
"Cluster_vs_DeltaBxCycle__" +
label;
1159 HistoName =
"DeltaBx_vs_ApvCycle__" +
label;
1186 for(
int ipos=cluster.
start+1; ipos<=cluster.
start+cluster.
width; ipos++){
1195 if (cluster.
noise > 0)
1200 if (cluster.
noise > 0)
1268 return ibooker.
book1D(HistoName,HistoName,
1279 return ibooker.
book2D(HistoName,HistoName,
1292 double kplus=
k0*(1+
dk0/100);
1293 double kminus=
k0*(1-
dk0/100);
1296 if (nstrip!=0 && npix >= (nstrip*kminus-
q0) && npix <=(nstrip*kplus+
q0)) region=1;
1297 else if (nstrip!=0 && npix < (nstrip*kminus-
q0) && nstrip <=
maxClus) region=2;
1298 else if (nstrip!=0 && npix < (nstrip*kminus-
q0) && nstrip >
maxClus) region=3;
1299 else if (nstrip!=0 && npix > (nstrip*kplus+
q0)) region=4;
1300 else if (npix >
minPix && nstrip==0) region=5;
void ResetModuleMEs(uint32_t idet)
T getParameter(std::string const &) const
virtual void analyze(const edm::Event &, const edm::EventSetup &)
TkHistoMap * tkmapclusterch
MonitorElement * bookME1D(const char *ParameterSetLabel, const char *HistoName, DQMStore::IBooker &ibooker)
int FindRegion(int nstrip, int npixel)
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
MonitorElement * ModuleLocalOccupancy
bool show_mechanical_structure_view
void setSiStripFolderName(std::string name)
MonitorElement * ClusterDigiPosition
MonitorElement * PixVsStripMultiplicityRegions
std::pair< const std::string, const char * > getSubDetFolderAndTag(const uint32_t &detid, const TrackerTopology *tTopo)
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
MonitorElement * bookProfile(Args &&...args)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
bool moduleswitchclusstonon
MonitorElement * GlobalCStripVsCpix
MonitorElement * SubDetClusterWidthTH1
MonitorElement * LayerLocalOccupancyTrend
bool layerswitchclusdigiposon
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
edm::ESHandle< SiStripDetCabling > SiStripDetCabling_
std::pair< std::string, int32_t > GetSubDetAndLayer(const uint32_t &detid, const TrackerTopology *tTopo, bool ring_flag=0)
MonitorElement * ClusterSignalOverNoiseVsPos
MonitorElement * LayerClusterNoise
Provides a code based selection for trigger and DCS information in order to have no failing filters i...
bool moduleswitchcluschargeon
bool subdetswitchtotclusth1on
MonitorElement * StripNoise2Cycle
data_type const * const_iterator
MonitorElement * NrOfClusterizedStrips
MonitorElement * LayerClusterStoN
void createLayerMEs(std::string label, int ndets, DQMStore::IBooker &ibooker)
MonitorElement * ClusterPosition
bool layerswitchnrclusterizedstrip
MonitorElement * LayerNumberOfClusterProfile
bool module_clusterWidth_vs_amplitude_on
std::map< std::string, LayerMEs > LayerMEsMap
MonitorElement * SubDetClusterApvTH2
bool moduleswitchclusposon
bool layerswitchclusstonon
bool layerswitchnumclusterprofon
bool subdetswitchcluswidthon
std::map< std::string, std::vector< uint32_t > > LayerDetMap
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
MonitorElement * NumberOfPixelClus
void setDetectorFolder(uint32_t rawdetid, const TrackerTopology *tTopo)
unsigned long long m_cacheID_
MonitorElement * SubDetApvDBxProf2
void createSubDetMEs(std::string label, DQMStore::IBooker &ibooker)
std::map< uint32_t, ModMEs > ModuleMEsMap
bool getStatus(edm::Event const &e, edm::EventSetup const &eSetup)
MonitorElement * SubDetClusterApvProf
MonitorElement * LayerClusWidthVsAmpTH2
MonitorElement * ClusterNoise
MonitorElement * ClusterSignalOverNoise
void createMEs(const edm::EventSetup &es, DQMStore::IBooker &ibooker)
bool moduleswitchcluswidthon
std::map< std::string, std::string > SubDetPhasePartMap
MonitorElement * GlobalApvCycleDBxTH2
bool globalswitchnclusvscycletimeprof2don
vector< ParameterSet > Parameters
void getTOBDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tobDetRawIds, uint32_t layer=0, uint32_t bkw_frw=0, uint32_t rod=0) const
MonitorElement * bookProfile2D(Args &&...args)
MonitorElement * LayerLocalOccupancy
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
bool subdetswitchapvcycleprofon
GenericTriggerEventFlag * genTriggerEventFlagPixelDCSfilter_
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
void fill(uint32_t &detid, float value)
MonitorElement * LayerClusterWidthProfile
bool accept(const edm::Event &event, const edm::EventSetup &setup)
To be called from analyze/filter() methods.
bool subdetswitchapvcycledbxprof2on
bool layerswitchclusposon
bool moduleswitchclusnoiseon
bool layerswitchcluschargeon
bool layerswitchclusstonVsposon
data_type const * data(size_t cell) const
MonitorElement * book1D(Args &&...args)
bool globalswitchcstripvscpix
void tag(MonitorElement *, unsigned int)
Abs< T >::type abs(const T &t)
std::pair< ContainerIterator, ContainerIterator > Range
MonitorElement * bookMETrend(const char *, DQMStore::IBooker &ibooker)
bool subdetswitchtotclusprofon
TkHistoMap * tkmapcluster
MonitorElement * NumberOfClusters
MonitorElement * SubDetTotClusterProf
MonitorElement * ClusterCharge
bool globalswitchstripnoise2apvcycle
bool moduleswitchclusstonVsposon
MonitorElement * NumberOfStripClus
Kind kind(void) const
Get the type of the monitor element.
std::string getSubdetid(uint32_t id, const TrackerTopology *tTopo, bool flag_ring)
void dqmBeginRun(const edm::Run &, const edm::EventSetup &)
MonitorElement * SubDetClusterChargeTH1
edm::EDGetTokenT< EventWithHistory > historyProducerToken_
MonitorElement * ClusWidthVsAmpTH2
MonitorElement * LayerClusterStoNTrend
MonitorElement * GlobalMainDiagonalPosition
std::string topFolderName_
MonitorElement * bookME2D(const char *ParameterSetLabel, const char *HistoName, DQMStore::IBooker &ibooker)
MonitorElement * SubDetClusterDBxCycleProf
SiStripDCSStatus * dcsStatus_
bool subdetswitchdbxcycleprofon
GenericTriggerEventFlag * genTriggerEventFlagBPTXfilter_
bool subdet_clusterWidth_vs_amplitude_on
bool globalswitchstripnoise3apvcycle
void setLayerFolder(uint32_t rawdetid, const TrackerTopology *tTopo, int32_t layer=0, bool ring_flag=0)
void fillME(MonitorElement *ME, float value1)
SiStripMonitorCluster(const edm::ParameterSet &)
void setCurrentFolder(const std::string &fullpath)
MonitorElement * LayerClusterWidth
MonitorElement * LayerClusterWidthTrend
MonitorElement * SubDetClusWidthVsAmpTH2
bool layerswitchclusnoiseon
T const * product() const
MonitorElement * book2D(Args &&...args)
bool layerswitchclusterwidthprofon
std::string createHistoId(std::string description, std::string id_type, uint32_t component_id)
T const * product() const
bool subdetswitchcluschargeon
bool layerswitchlocaloccupancy
bool layer_clusterWidth_vs_amplitude_on
MonitorElement * StripNoise3Cycle
void createModuleMEs(ModMEs &mod_single, uint32_t detid, DQMStore::IBooker &ibooker)
void getTECDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tecDetRawIds, uint32_t side=0, uint32_t wheel=0, uint32_t petal_bkw_frw=0, uint32_t petal=0, uint32_t ring=0, uint32_t ster=0) const
bool layerswitchcluswidthon
edm::EDGetTokenT< edmNew::DetSetVector< SiPixelCluster > > clusterProducerPixToken_
std::map< std::string, SubDetMEs > SubDetMEsMap
void fillLayerMEs(LayerMEs &, ClusterProperties &cluster)
std::pair< ContainerIterator, ContainerIterator > Range
void getTIBDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tibDetRawIds, uint32_t layer=0, uint32_t bkw_frw=0, uint32_t int_ext=0, uint32_t string=0) const
MonitorElement * LayerClusterCharge
MonitorElement * SubDetTotClusterTH1
bool applyClusterQuality_
MonitorElement * ClusterWidth
edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > clusterProducerStripToken_
void getTIDDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tidDetRawIds, uint32_t side=0, uint32_t wheel=0, uint32_t ring=0, uint32_t ster=0) const
MonitorElement * LayerClusterChargeTrend
volatile std::atomic< bool > shutdown_flag false
void initRun(const edm::Run &run, const edm::EventSetup &setup)
To be called from beginRun() methods.
std::string createHistoLayer(std::string description, std::string id_type, std::string path, std::string flag)
std::pair< ContainerIterator, ContainerIterator > Range
bool globalswitchMultiRegions
bool moduleswitchlocaloccupancy
edm::EDGetTokenT< APVCyclePhaseCollection > apvPhaseProducerToken_
std::string qualityLabel_
MonitorElement * Module_ClusWidthVsAmpTH2
GenericTriggerEventFlag * genTriggerEventFlagStripDCSfilter_
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void Reset(void)
reset ME (ie. contents, errors, etc)
bool globalswitchmaindiagonalposition
MonitorElement * NclusVsCycleTimeProf2D
bool globalswitchapvcycledbxth2on
void fillModuleMEs(ModMEs &mod_mes, ClusterProperties &cluster)
bool clusterchtkhistomapon
bool clusterWidth_vs_amplitude_on
MonitorElement * LayerClusterNoiseTrend
bool moduleswitchnrclusterizedstrip
bool subdetswitchapvcycleth2on
bool moduleswitchclusdigiposon