44 : 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)
154 k0 = ClusterMultiplicityRegions.getParameter<
double>(
"k0");
155 q0 = ClusterMultiplicityRegions.getParameter<
double>(
"q0");
156 dk0 = ClusterMultiplicityRegions.getParameter<
double>(
"dk0");
157 maxClus = ClusterMultiplicityRegions.getParameter<
double>(
"MaxClus");
158 minPix = ClusterMultiplicityRegions.getParameter<
double>(
"MinPix");
236 std::vector<uint32_t> activeDets;
255 edm::LogInfo(
"SiStripTkDQM|SiStripMonitorCluster")<<
"nr. of activeDets: "<<activeDets.size();
256 for(std::vector<uint32_t>::iterator detid_iterator = activeDets.begin(); detid_iterator!=activeDets.end(); detid_iterator++){
257 uint32_t
detid = (*detid_iterator);
260 activeDets.erase(detid_iterator);
271 ModuleMEsMap.insert( std::make_pair(detid, mod_single));
275 std::pair<std::string,int32_t> det_layer_pair = folder_organizer.
GetSubDetAndLayer(detid, tTopo);
279 std::map<std::string, LayerMEs>::iterator iLayerME =
LayerMEsMap.find(label);
283 int32_t lnumber = det_layer_pair.second;
284 std::vector<uint32_t> layerDetIds;
285 if (det_layer_pair.first ==
"TIB") {
287 }
else if (det_layer_pair.first ==
"TOB") {
289 }
else if (det_layer_pair.first ==
"TID" && lnumber > 0) {
291 }
else if (det_layer_pair.first ==
"TID" && lnumber < 0) {
293 }
else if (det_layer_pair.first ==
"TEC" && lnumber > 0) {
295 }
else if (det_layer_pair.first ==
"TEC" && lnumber < 0) {
301 folder_organizer.
setLayerFolder(detid,tTopo,det_layer_pair.second);
406 const char*
HistoName =
"StripClusVsBXandOrbit";
407 const char* HistoTitle =
"Strip cluster multiplicity vs BX mod(70) and Orbit;Event 1 BX mod(70);time [Orb#]";
410 ParametersNclusVsCycleTimeProf2D.
getParameter<int32_t>(
"Nbins"),
411 ParametersNclusVsCycleTimeProf2D.
getParameter<
double>(
"xmin"),
412 ParametersNclusVsCycleTimeProf2D.
getParameter<
double>(
"xmax"),
413 ParametersNclusVsCycleTimeProf2D.
getParameter<int32_t>(
"Nbinsy"),
414 ParametersNclusVsCycleTimeProf2D.
getParameter<
double>(
"ymin"),
415 ParametersNclusVsCycleTimeProf2D.
getParameter<
double>(
"ymax"),
432 HistoName =
"NumberOfClustersInStrip";
453 edm::LogInfo(
"SiStripMonitorCluster") <<
"SiStripMonitorCluster::bookHistograms: "
454 <<
" Creating MEs for new Cabling ";
459 edm::LogInfo(
"SiStripMonitorCluster") <<
"SiStripMonitorCluster::bookHistograms: "
460 <<
" Resetting MEs ";
489 int NPixClusters=0, NStripClusters=0, MultiplicityRegion=0;
490 bool isPixValid=
false;
511 if (!cluster_detsetvektor.
isValid())
return;
514 NStripClusters= StrC->
data().size();
516 if (cluster_detsetvektor_pix.
isValid()){
520 MultiplicityRegion=
FindRegion(NStripClusters,NPixClusters);
536 for (std::map<std::string, SubDetMEs>::iterator iSubdet =
SubDetMEsMap.begin();
538 iSubdet->second.totNClusters = 0;
542 bool found_layer_me =
false;
548 int ncluster_layer = 0;
549 std::map<std::string, LayerMEs>::iterator iLayerME =
LayerMEsMap.find(layer_label);
554 layer_single = iLayerME->second;
555 found_layer_me =
true;
558 bool found_module_me =
false;
562 for (std::vector< uint32_t >::const_iterator iterDets = iterLayer->second.begin() ;
563 iterDets != iterLayer->second.end() ; iterDets++) {
566 uint32_t
detid = (*iterDets);
569 if (subdet_label.size() == 0) subdet_label = folder_organizer.
getSubDetFolderAndTag(detid, tTopo).second;
574 std::map<uint32_t, ModMEs >::iterator imodME =
ModuleMEsMap.find(detid);
576 mod_single = imodME->second;
577 found_module_me =
true;
579 }
else found_module_me =
false;
583 if(isearch==cluster_detsetvektor->end()){
607 ncluster_layer += cluster_detset.
size();
609 short total_clusterized_strips = 0;
617 const auto & ampls = clusterIter->amplitudes();
619 float cluster_position = clusterIter->barycenter();
621 short cluster_start = clusterIter->firstStrip();
623 short cluster_width = ampls.size();
625 total_clusterized_strips = total_clusterized_strips + cluster_width;
628 float cluster_signal = 0.0;
629 float cluster_noise = 0.0;
630 int nrnonzeroamplitudes = 0;
633 for(uint iamp=0; iamp<ampls.size(); iamp++){
635 cluster_signal += ampls[iamp];
636 if(!qualityHandle->IsStripBad(qualityRange, clusterIter->firstStrip()+iamp)){
637 noise = noiseHandle->getNoise(clusterIter->firstStrip()+iamp,detNoiseRange)/gainHandle->getStripGain(clusterIter->firstStrip()+iamp, detGainRange);
639 noise2 += noise*
noise;
640 nrnonzeroamplitudes++;
644 if (nrnonzeroamplitudes > 0) cluster_noise =
sqrt(noise2/nrnonzeroamplitudes);
653 cluster_properties.
charge = cluster_signal;
654 cluster_properties.
position = cluster_position;
655 cluster_properties.
start = cluster_start;
656 cluster_properties.
width = cluster_width;
657 cluster_properties.
noise = cluster_noise;
660 if (found_module_me)
fillModuleMEs(mod_single, cluster_properties);
663 if (found_layer_me) {
671 std::map<std::string, SubDetMEs>::iterator iSubdet =
SubDetMEsMap.find(subdet_label);
681 float local_occupancy =
static_cast<float>(total_clusterized_strips)/static_cast<float>(total_nr_strips);
682 if (found_module_me) {
697 std::map<std::string, SubDetMEs>::iterator iSubdet =
SubDetMEsMap.find(subdet_label);
698 if(iSubdet !=
SubDetMEsMap.end()) iSubdet->second.totNClusters += ncluster_layer;
711 && apv_phase_collection.
isValid()
715 long long dbx = event_history->deltaBX();
716 long long tbx = event_history->absoluteBX();
718 bool global_histo_filled =
false;
719 bool MultiplicityRegion_Vs_APVcycle_filled=
false;
721 for (std::map<std::string, SubDetMEs>::iterator it =
SubDetMEsMap.begin();
728 long long tbx_corr = tbx;
737 tbx_corr -= the_phase;
738 long long dbxincycle = event_history->deltaBXinCycle(the_phase);
741 global_histo_filled =
true;
744 if (isPixValid && !MultiplicityRegion_Vs_APVcycle_filled){
747 MultiplicityRegion_Vs_APVcycle_filled=
true;
766 long long tbx_corr = tbx;
767 int the_phase = apv_phase_collection->getPhase(
"All");
774 tbx_corr -= the_phase;
784 std::map<uint32_t, ModMEs >::iterator pos =
ModuleMEsMap.find(idet);
785 ModMEs mod_me = pos->second;
809 hid = hidmanager.
createHistoId(
"NumberOfClusters",
"det",detid);
819 hid = hidmanager.
createHistoId(
"ClusterPosition",
"det",detid);
828 hid = hidmanager.
createHistoId(
"ClusterDigiPosition",
"det",detid);
860 hid = hidmanager.
createHistoId(
"ClusterSignalOverNoise",
"det",detid);
868 hid = hidmanager.
createHistoId(
"ClusterSignalOverNoiseVsPos",
"det",detid);
884 hid = hidmanager.
createHistoId(
"ClusterLocalOccupancy",
"det",detid);
892 hid = hidmanager.
createHistoId(
"NrOfClusterizedStrips",
"det",detid);
987 HistoName =
"ClusterCharge__" +
label;
994 HistoName =
"ClusterWidth__" +
label;
1001 HistoName =
"TotalNumberOfCluster__" +
label;
1009 HistoName =
"TotalNumberOfClusterProfile__" +
label;
1022 HistoName =
"Cluster_vs_ApvCycle__" +
label;
1037 HistoName =
"Cluster_vs_ApvCycle_2D__" +
label;
1039 double h2ymax = 9999.0;
1040 double yfact = Parameters.
getParameter<
double>(
"yfactor");
1041 if(label.find(
"TIB") != std::string::npos) h2ymax = (6984.*256.)*yfact;
1042 else if (label.find(
"TID") != std::string::npos) h2ymax = (2208.*256.)*yfact;
1043 else if (label.find(
"TOB") != std::string::npos) h2ymax = (12906.*256.)*yfact;
1044 else if (label.find(
"TEC") != std::string::npos) h2ymax = (7552.*2.*256.)*yfact;
1060 HistoName =
"Cluster_vs_DeltaBxCycle__" +
label;
1074 HistoName =
"DeltaBx_vs_ApvCycle__" +
label;
1101 for(
int ipos=cluster.
start+1; ipos<=cluster.
start+cluster.
width; ipos++){
1110 if (cluster.
noise > 0)
1115 if (cluster.
noise > 0)
1179 return ibooker.
book1D(HistoName,HistoName,
1188 double kplus=
k0*(1+
dk0/100);
1189 double kminus=
k0*(1-
dk0/100);
1192 if (nstrip!=0 && npix >= (nstrip*kminus-
q0) && npix <=(nstrip*kplus+
q0)) region=1;
1193 else if (nstrip!=0 && npix < (nstrip*kminus-
q0) && nstrip <=
maxClus) region=2;
1194 else if (nstrip!=0 && npix < (nstrip*kminus-
q0) && nstrip >
maxClus) region=3;
1195 else if (nstrip!=0 && npix > (nstrip*kplus+
q0)) region=4;
1196 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 &)
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
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 * 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 * LayerClusterStoNTrend
MonitorElement * GlobalMainDiagonalPosition
std::string topFolderName_
MonitorElement * SubDetClusterDBxCycleProf
SiStripDCSStatus * dcsStatus_
bool subdetswitchdbxcycleprofon
GenericTriggerEventFlag * genTriggerEventFlagBPTXfilter_
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
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
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_
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)
MonitorElement * LayerClusterNoiseTrend
bool moduleswitchnrclusterizedstrip
bool subdetswitchapvcycleth2on
bool moduleswitchclusdigiposon