46 : 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)
156 k0 = ClusterMultiplicityRegions.getParameter<
double>(
"k0");
157 q0 = ClusterMultiplicityRegions.getParameter<
double>(
"q0");
158 dk0 = ClusterMultiplicityRegions.getParameter<
double>(
"dk0");
159 maxClus = ClusterMultiplicityRegions.getParameter<
double>(
"MaxClus");
160 minPix = ClusterMultiplicityRegions.getParameter<
double>(
"MinPix");
245 std::vector<uint32_t> activeDets;
269 edm::LogInfo(
"SiStripTkDQM|SiStripMonitorCluster")<<
"nr. of activeDets: "<<activeDets.size();
270 for(std::vector<uint32_t>::iterator detid_iterator = activeDets.begin(); detid_iterator!=activeDets.end(); detid_iterator++){
271 uint32_t detid = (*detid_iterator);
274 activeDets.erase(detid_iterator);
285 ModuleMEsMap.insert( std::make_pair(detid, mod_single));
289 std::pair<std::string,int32_t> det_layer_pair = folder_organizer.
GetSubDetAndLayer(detid, tTopo);
293 std::map<std::string, LayerMEs>::iterator iLayerME =
LayerMEsMap.find(label);
297 int32_t lnumber = det_layer_pair.second;
298 std::vector<uint32_t> layerDetIds;
299 if (det_layer_pair.first ==
"TIB") {
301 }
else if (det_layer_pair.first ==
"TOB") {
303 }
else if (det_layer_pair.first ==
"TID" && lnumber > 0) {
305 }
else if (det_layer_pair.first ==
"TID" && lnumber < 0) {
307 }
else if (det_layer_pair.first ==
"TEC" && lnumber > 0) {
309 }
else if (det_layer_pair.first ==
"TEC" && lnumber < 0) {
315 folder_organizer.
setLayerFolder(detid,tTopo,det_layer_pair.second);
344 HistoName =
"DeltaBx";
355 HistoName =
"DeltaBxCycle";
381 HistoName =
"AbsoluteBx_CStripVsCpixel";
417 HistoName =
"MainDiagonalPosition_vs_BX";
431 HistoName =
"TH2MainDiagonalPosition_vs_BX";
481 const char*
HistoName =
"StripClusVsBXandOrbit";
482 const char* HistoTitle =
"Strip cluster multiplicity vs BX mod(70) and Orbit;Event 1 BX mod(70);time [Orb#]";
485 ParametersNclusVsCycleTimeProf2D.
getParameter<int32_t>(
"Nbins"),
486 ParametersNclusVsCycleTimeProf2D.
getParameter<
double>(
"xmin"),
487 ParametersNclusVsCycleTimeProf2D.
getParameter<
double>(
"xmax"),
488 ParametersNclusVsCycleTimeProf2D.
getParameter<int32_t>(
"Nbinsy"),
489 ParametersNclusVsCycleTimeProf2D.
getParameter<
double>(
"ymin"),
490 ParametersNclusVsCycleTimeProf2D.
getParameter<
double>(
"ymax"),
497 const char*
HistoName =
"ClusterWidths_vs_Amplitudes";
498 const char* HistoTitle =
"Cluster widths vs amplitudes;Amplitudes (integrated ADC counts);Cluster widths";
500 ParametersClusWidthVsAmpTH2.
getParameter<int32_t>(
"Nbinsx"),
501 ParametersClusWidthVsAmpTH2.
getParameter<
double>(
"xmin"),
502 ParametersClusWidthVsAmpTH2.
getParameter<
double>(
"xmax"),
503 ParametersClusWidthVsAmpTH2.
getParameter<int32_t>(
"Nbinsy"),
504 ParametersClusWidthVsAmpTH2.
getParameter<
double>(
"ymin"),
505 ParametersClusWidthVsAmpTH2.
getParameter<
double>(
"ymax"));
520 HistoName =
"NumberOfClustersInStrip";
530 HistoName =
"NumberOfClustersInStrip_vs_BX";
544 HistoName =
"NumberOfClustersInPixel_vs_BX";
569 edm::LogInfo(
"SiStripMonitorCluster") <<
"SiStripMonitorCluster::bookHistograms: "
570 <<
" Creating MEs for new Cabling ";
575 edm::LogInfo(
"SiStripMonitorCluster") <<
"SiStripMonitorCluster::bookHistograms: "
576 <<
" Resetting MEs ";
605 int NPixClusters=0, NStripClusters=0, MultiplicityRegion=0;
606 bool isPixValid=
false;
627 if (!cluster_detsetvektor.
isValid())
return;
630 NStripClusters= StrC->
data().size();
632 if (cluster_detsetvektor_pix.
isValid()){
636 MultiplicityRegion=
FindRegion(NStripClusters,NPixClusters);
653 for (std::map<std::string, SubDetMEs>::iterator iSubdet =
SubDetMEsMap.begin();
655 iSubdet->second.totNClusters = 0;
659 bool found_layer_me =
false;
665 int ncluster_layer = 0;
666 std::map<std::string, LayerMEs>::iterator iLayerME =
LayerMEsMap.find(layer_label);
671 layer_single = iLayerME->second;
672 found_layer_me =
true;
675 bool found_module_me =
false;
679 for (std::vector< uint32_t >::const_iterator iterDets = iterLayer->second.begin() ;
680 iterDets != iterLayer->second.end() ; iterDets++) {
683 uint32_t detid = (*iterDets);
686 if (subdet_label.size() == 0) subdet_label = folder_organizer.
getSubDetFolderAndTag(detid, tTopo).second;
691 std::map<uint32_t, ModMEs >::iterator imodME =
ModuleMEsMap.find(detid);
693 mod_single = imodME->second;
694 found_module_me =
true;
696 }
else found_module_me =
false;
700 if(isearch==cluster_detsetvektor->end()){
725 ncluster_layer += cluster_detset.
size();
727 short total_clusterized_strips = 0;
735 const auto & ampls = clusterIter->amplitudes();
737 float cluster_position = clusterIter->barycenter();
739 short cluster_start = clusterIter->firstStrip();
741 short cluster_width = ampls.size();
743 total_clusterized_strips = total_clusterized_strips + cluster_width;
748 float cluster_signal = 0.0;
749 float cluster_noise = 0.0;
750 int nrnonzeroamplitudes = 0;
753 for(uint iamp=0; iamp<ampls.size(); iamp++){
755 cluster_signal += ampls[iamp];
756 if(!qualityHandle->IsStripBad(qualityRange, clusterIter->firstStrip()+iamp)){
757 noise = noiseHandle->getNoise(clusterIter->firstStrip()+iamp,detNoiseRange)/gainHandle->getStripGain(clusterIter->firstStrip()+iamp, detGainRange);
759 noise2 += noise*
noise;
760 nrnonzeroamplitudes++;
764 if (nrnonzeroamplitudes > 0) cluster_noise =
sqrt(noise2/nrnonzeroamplitudes);
773 cluster_properties.
charge = cluster_signal;
774 cluster_properties.
position = cluster_position;
775 cluster_properties.
start = cluster_start;
776 cluster_properties.
width = cluster_width;
777 cluster_properties.
noise = cluster_noise;
780 if (found_module_me)
fillModuleMEs(mod_single, cluster_properties);
783 if (found_layer_me) {
791 std::map<std::string, SubDetMEs>::iterator iSubdet =
SubDetMEsMap.find(subdet_label);
801 std::map<std::string, SubDetMEs>::iterator iSubdet =
SubDetMEsMap.find(subdet_label);
802 if(iSubdet !=
SubDetMEsMap.end()) iSubdet->second.SubDetClusWidthVsAmpTH2->Fill(cluster_signal, cluster_width);
811 std::map<std::string, SubDetMEs>::iterator iSubdet =
SubDetMEsMap.find(subdet_label);
812 std::pair<std::string,int32_t> det_layer_pair = folder_organizer.
GetSubDetAndLayer(detid, tTopo);
813 if(iSubdet !=
SubDetMEsMap.end()) iSubdet->second.SubDetNumberOfClusterPerLayerTrend->Fill(
trendVar,
abs(det_layer_pair.second));
816 if (
subdetswitchtotclusprofon && (subdet_label.find(
"TID")!=std::string::npos || subdet_label.find(
"TEC")!=std::string::npos)){
817 std::pair<std::string,int32_t> det_ring_pair = folder_organizer.
GetSubDetAndLayer(detid,tTopo,
true);
824 float local_occupancy =
static_cast<float>(total_clusterized_strips)/static_cast<float>(total_nr_strips);
825 if (found_module_me) {
844 std::map<std::string, SubDetMEs>::iterator iSubdet =
SubDetMEsMap.find(subdet_label);
845 if(iSubdet !=
SubDetMEsMap.end()) iSubdet->second.totNClusters += ncluster_layer;
858 && apv_phase_collection.
isValid()
862 long long dbx = event_history->deltaBX();
863 long long tbx = event_history->absoluteBX();
865 bool global_histo_filled =
false;
866 bool MultiplicityRegion_Vs_APVcycle_filled=
false;
874 for (std::map<std::string, SubDetMEs>::iterator it =
SubDetMEsMap.begin();
881 long long tbx_corr = tbx;
891 tbx_corr -= the_phase;
893 long long dbxincycle = event_history->deltaBXinCycle(the_phase);
899 global_histo_filled =
true;
904 if (cluster_detsetvektor_pix.
isValid()){
920 if (isPixValid && !MultiplicityRegion_Vs_APVcycle_filled){
923 MultiplicityRegion_Vs_APVcycle_filled=
true;
943 long long tbx_corr = tbx;
944 int the_phase = apv_phase_collection->getPhase(
"All");
951 tbx_corr -= the_phase;
961 std::map<uint32_t, ModMEs >::iterator pos =
ModuleMEsMap.find(idet);
962 ModMEs mod_me = pos->second;
987 hid = hidmanager.
createHistoId(
"NumberOfClusters",
"det",detid);
997 hid = hidmanager.
createHistoId(
"ClusterPosition",
"det",detid);
1006 hid = hidmanager.
createHistoId(
"ClusterDigiPosition",
"det",detid);
1022 hid = hidmanager.
createHistoId(
"ClusterCharge",
"det",detid);
1038 hid = hidmanager.
createHistoId(
"ClusterSignalOverNoise",
"det",detid);
1046 hid = hidmanager.
createHistoId(
"ClusterSignalOverNoiseVsPos",
"det",detid);
1062 hid = hidmanager.
createHistoId(
"ClusterLocalOccupancy",
"det",detid);
1070 hid = hidmanager.
createHistoId(
"NrOfClusterizedStrips",
"det",detid);
1077 hid = hidmanager.
createHistoId(
"ClusterWidths_vs_Amplitudes",
"det",detid);
1159 if (label.find(
"TID")!=std::string::npos || label.find(
"TEC")!=std::string::npos){
1211 HistoName =
"ClusterCharge__" +
label;
1218 HistoName =
"ClusterWidth__" +
label;
1225 HistoName =
"TotalNumberOfCluster__" +
label;
1233 HistoName =
"TotalNumberOfClusterProfile__" +
label;
1242 HistoName =
"TotalNumberOfClusterPerLayer__" +
label;
1252 HistoName =
"Cluster_vs_ApvCycle__" +
label;
1267 HistoName =
"Cluster_vs_ApvCycle_2D__" +
label;
1269 double h2ymax = 9999.0;
1270 double yfact = Parameters.
getParameter<
double>(
"yfactor");
1271 if(label.find(
"TIB") != std::string::npos) h2ymax = (6984.*256.)*yfact;
1272 else if (label.find(
"TID") != std::string::npos) h2ymax = (2208.*256.)*yfact;
1273 else if (label.find(
"TOB") != std::string::npos) h2ymax = (12906.*256.)*yfact;
1274 else if (label.find(
"TEC") != std::string::npos) h2ymax = (7552.*2.*256.)*yfact;
1291 HistoName =
"ClusterWidths_vs_Amplitudes__" +
label;
1309 HistoName =
"Cluster_vs_DeltaBxCycle__" +
label;
1323 HistoName =
"DeltaBx_vs_ApvCycle__" +
label;
1350 for(
int ipos=cluster.
start+1; ipos<=cluster.
start+cluster.
width; ipos++){
1359 if (cluster.
noise > 0)
1364 if (cluster.
noise > 0)
1437 return ibooker.
book1D(HistoName,HistoName,
1448 return ibooker.
book2D(HistoName,HistoName,
1461 double kplus=
k0*(1+
dk0/100);
1462 double kminus=
k0*(1-
dk0/100);
1465 if (nstrip!=0 && npix >= (nstrip*kminus-
q0) && npix <=(nstrip*kplus+
q0)) region=1;
1466 else if (nstrip!=0 && npix < (nstrip*kminus-
q0) && nstrip <=
maxClus) region=2;
1467 else if (nstrip!=0 && npix < (nstrip*kminus-
q0) && nstrip >
maxClus) region=3;
1468 else if (nstrip!=0 && npix > (nstrip*kplus+
q0)) region=4;
1469 else if (npix >
minPix && nstrip==0) region=5;
MonitorElement * GlobalABXTH1_CSCP
void ResetModuleMEs(uint32_t idet)
T getParameter(std::string const &) const
virtual void analyze(const edm::Event &, const edm::EventSetup &)
TkHistoMap * tkmapclusterch
MonitorElement * LayerNumberOfClusterTrend
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
MonitorElement * NumberOfPixelClus_vs_BX
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)
MonitorElement * GlobalTH2MainDiagonalPosition_vs_BX
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
MonitorElement * LayerClusterPosition
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 * GlobalMainDiagonalPosition_vs_BX
MonitorElement * SubDetClusterChargeTH1
MonitorElement * NumberOfStripClus_vs_BX
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_
MonitorElement * GlobalDBxTH1
MonitorElement * LayerNumberOfClusterPerRingTrend
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
MonitorElement * GlobalDBxCycleTH1
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)
MonitorElement * SubDetNumberOfClusterPerLayerTrend
bool clusterchtkhistomapon
bool clusterWidth_vs_amplitude_on
MonitorElement * LayerClusterNoiseTrend
bool moduleswitchnrclusterizedstrip
bool subdetswitchapvcycleth2on
bool moduleswitchclusdigiposon