152 k0 = ClusterMultiplicityRegions.getParameter<
double>(
"k0");
153 q0 = ClusterMultiplicityRegions.getParameter<
double>(
"q0");
154 dk0 = ClusterMultiplicityRegions.getParameter<
double>(
"dk0");
155 maxClus = ClusterMultiplicityRegions.getParameter<
double>(
"MaxClus");
156 minPix = ClusterMultiplicityRegions.getParameter<
double>(
"MinPix");
218 edm::LogInfo(
"SiStripMonitorCluster") <<
"SiStripMonitorCluster::beginRun: "
219 <<
" Creating MEs for new Cabling ";
224 edm::LogInfo(
"SiStripMonitorCluster") <<
"SiStripMonitorCluster::beginRun: "
225 <<
" Resetting MEs ";
246 std::vector<uint32_t> activeDets;
265 edm::LogInfo(
"SiStripTkDQM|SiStripMonitorCluster")<<
"nr. of activeDets: "<<activeDets.size();
266 for(std::vector<uint32_t>::iterator detid_iterator = activeDets.begin(); detid_iterator!=activeDets.end(); detid_iterator++){
267 uint32_t
detid = (*detid_iterator);
270 activeDets.erase(detid_iterator);
281 ModuleMEsMap.insert( std::make_pair(detid, mod_single));
285 std::pair<std::string,int32_t> det_layer_pair = folder_organizer.
GetSubDetAndLayer(detid, tTopo);
289 std::map<std::string, LayerMEs>::iterator iLayerME =
LayerMEsMap.find(label);
293 int32_t lnumber = det_layer_pair.second;
294 std::vector<uint32_t> layerDetIds;
295 if (det_layer_pair.first ==
"TIB") {
297 }
else if (det_layer_pair.first ==
"TOB") {
299 }
else if (det_layer_pair.first ==
"TID" && lnumber > 0) {
301 }
else if (det_layer_pair.first ==
"TID" && lnumber < 0) {
303 }
else if (det_layer_pair.first ==
"TEC" && lnumber > 0) {
305 }
else if (det_layer_pair.first ==
"TEC" && lnumber < 0) {
311 folder_organizer.
setLayerFolder(detid,tTopo,det_layer_pair.second);
426 HistoName =
"NumberOfClustersInStrip";
460 int NPixClusters=0, NStripClusters=0, MultiplicityRegion=0;
461 bool isPixValid=
false;
484 if (!cluster_detsetvektor.
isValid())
return;
487 NStripClusters= StrC->
data().size();
489 if (cluster_detsetvektor_pix.
isValid()){
493 MultiplicityRegion=
FindRegion(NStripClusters,NPixClusters);
509 for (std::map<std::string, SubDetMEs>::iterator iSubdet =
SubDetMEsMap.begin();
511 iSubdet->second.totNClusters = 0;
515 bool found_layer_me =
false;
521 int ncluster_layer = 0;
522 std::map<std::string, LayerMEs>::iterator iLayerME =
LayerMEsMap.find(layer_label);
527 layer_single = iLayerME->second;
528 found_layer_me =
true;
531 bool found_module_me =
false;
535 for (std::vector< uint32_t >::const_iterator iterDets = iterLayer->second.begin() ;
536 iterDets != iterLayer->second.end() ; iterDets++) {
539 uint32_t
detid = (*iterDets);
542 if (subdet_label.size() == 0) subdet_label = folder_organizer.
getSubDetFolderAndTag(detid, tTopo).second;
547 std::map<uint32_t, ModMEs >::iterator imodME =
ModuleMEsMap.find(detid);
549 mod_single = imodME->second;
550 found_module_me =
true;
552 }
else found_module_me =
false;
556 if(isearch==cluster_detsetvektor->end()){
579 ncluster_layer += cluster_detset.
size();
581 short total_clusterized_strips = 0;
589 const std::vector<uint8_t>& ampls = clusterIter->amplitudes();
591 float cluster_position = clusterIter->barycenter();
593 short cluster_start = clusterIter->firstStrip();
595 short cluster_width = ampls.size();
597 total_clusterized_strips = total_clusterized_strips + cluster_width;
600 float cluster_signal = 0.0;
601 float cluster_noise = 0.0;
602 int nrnonzeroamplitudes = 0;
605 for(uint iamp=0; iamp<ampls.size(); iamp++){
607 cluster_signal += ampls[iamp];
608 if(!qualityHandle->IsStripBad(qualityRange, clusterIter->firstStrip()+iamp)){
609 noise = noiseHandle->getNoise(clusterIter->firstStrip()+iamp,detNoiseRange)/gainHandle->getStripGain(clusterIter->firstStrip()+iamp, detGainRange);
611 noise2 += noise*noise;
612 nrnonzeroamplitudes++;
616 if (nrnonzeroamplitudes > 0) cluster_noise =
sqrt(noise2/nrnonzeroamplitudes);
625 cluster_properties.
charge = cluster_signal;
626 cluster_properties.
position = cluster_position;
627 cluster_properties.
start = cluster_start;
628 cluster_properties.
width = cluster_width;
629 cluster_properties.
noise = cluster_noise;
632 if (found_module_me)
fillModuleMEs(mod_single, cluster_properties);
635 if (found_layer_me) {
636 fillLayerMEs(layer_single, cluster_properties, iOrbitSec);
643 float local_occupancy =
static_cast<float>(total_clusterized_strips)/static_cast<float>(total_nr_strips);
644 if (found_module_me) {
658 std::map<std::string, SubDetMEs>::iterator iSubdet =
SubDetMEsMap.find(subdet_label);
659 if(iSubdet !=
SubDetMEsMap.end()) iSubdet->second.totNClusters += ncluster_layer;
674 && apv_phase_collection.
isValid()
678 long long dbx = event_history->deltaBX();
679 long long tbx = event_history->absoluteBX();
681 bool global_histo_filled =
false;
682 bool MultiplicityRegion_Vs_APVcycle_filled=
false;
684 for (std::map<std::string, SubDetMEs>::iterator it =
SubDetMEsMap.begin();
691 long long tbx_corr = tbx;
700 tbx_corr -= the_phase;
701 long long dbxincycle = event_history->deltaBXinCycle(the_phase);
704 global_histo_filled =
true;
707 if (isPixValid && !MultiplicityRegion_Vs_APVcycle_filled){
710 MultiplicityRegion_Vs_APVcycle_filled=
true;
742 std::map<uint32_t, ModMEs >::iterator pos =
ModuleMEsMap.find(idet);
743 ModMEs mod_me = pos->second;
767 hid = hidmanager.
createHistoId(
"NumberOfClusters",
"det",detid);
777 hid = hidmanager.
createHistoId(
"ClusterPosition",
"det",detid);
786 hid = hidmanager.
createHistoId(
"ClusterDigiPosition",
"det",detid);
818 hid = hidmanager.
createHistoId(
"ClusterSignalOverNoise",
"det",detid);
826 hid = hidmanager.
createHistoId(
"ClusterSignalOverNoiseVsPos",
"det",detid);
842 hid = hidmanager.
createHistoId(
"ClusterLocalOccupancy",
"det",detid);
850 hid = hidmanager.
createHistoId(
"NrOfClusterizedStrips",
"det",detid);
939 HistoName =
"TotalNumberOfCluster__" +
label;
947 HistoName =
"TotalNumberOfClusterProfile__" +
label;
962 HistoName =
"Cluster_vs_ApvCycle__" +
label;
977 HistoName =
"Cluster_vs_ApvCycle_2D__" +
label;
979 double h2ymax = 9999.0;
980 double yfact = Parameters.
getParameter<
double>(
"yfactor");
981 if(label.find(
"TIB") != std::string::npos) h2ymax = (6984.*256.)*yfact;
982 else if (label.find(
"TID") != std::string::npos) h2ymax = (2208.*256.)*yfact;
983 else if (label.find(
"TOB") != std::string::npos) h2ymax = (12906.*256.)*yfact;
984 else if (label.find(
"TEC") != std::string::npos) h2ymax = (7552.*2.*256.)*yfact;
1000 HistoName =
"Cluster_vs_DeltaBxCycle__" +
label;
1014 HistoName =
"DeltaBx_vs_ApvCycle__" +
label;
1041 for(
int ipos=cluster.
start+1; ipos<=cluster.
start+cluster.
width; ipos++){
1050 if (cluster.
noise > 0)
1055 if (cluster.
noise > 0)
1097 ParametersTrend.getParameter<int32_t>(
"Nbins"),
1099 ParametersTrend.getParameter<
double>(
"xmin"),
1100 ParametersTrend.getParameter<
double>(
"xmax"),
1103 ParametersTrend.getParameter<
double>(
"ymin"),
1104 ParametersTrend.getParameter<
double>(
"ymax"),
1125 double kplus=
k0*(1+
dk0/100);
1126 double kminus=
k0*(1-
dk0/100);
1129 if (nstrip!=0 && npix >= (nstrip*kminus-
q0) && npix <=(nstrip*kplus+
q0)) region=1;
1130 else if (nstrip!=0 && npix < (nstrip*kminus-
q0) && nstrip <=
maxClus) region=2;
1131 else if (nstrip!=0 && npix < (nstrip*kminus-
q0) && nstrip >
maxClus) region=3;
1132 else if (nstrip!=0 && npix > (nstrip*kplus+
q0)) region=4;
1133 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 &)
int FindRegion(int nstrip, int npixel)
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
MonitorElement * ModuleLocalOccupancy
bool show_mechanical_structure_view
MonitorElement * bookME1D(const char *ParameterSetLabel, const char *HistoName)
void setSiStripFolderName(std::string name)
MonitorElement * ClusterDigiPosition
MonitorElement * PixVsStripMultiplicityRegions
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
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
bool getByToken(EDGetToken token, Handle< PROD > &result) const
bool moduleswitchclusstonon
MonitorElement * GlobalCStripVsCpix
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
MonitorElement * ClusterPosition
bool layerswitchnrclusterizedstrip
MonitorElement * LayerNumberOfClusterProfile
std::map< std::string, LayerMEs > LayerMEsMap
MonitorElement * SubDetClusterApvTH2
bool moduleswitchclusposon
void createMEs(const edm::EventSetup &es)
bool layerswitchclusstonon
bool layerswitchnumclusterprofon
std::map< std::string, std::vector< uint32_t > > LayerDetMap
MonitorElement * NumberOfPixelClus
void setDetectorFolder(uint32_t rawdetid, const TrackerTopology *tTopo)
unsigned long long m_cacheID_
void tag(MonitorElement *me, unsigned int myTag)
MonitorElement * SubDetApvDBxProf2
std::map< uint32_t, ModMEs > ModuleMEsMap
bool getStatus(edm::Event const &e, edm::EventSetup const &eSetup)
void createSubDetMEs(std::string label)
MonitorElement * SubDetClusterApvProf
MonitorElement * ClusterNoise
MonitorElement * ClusterSignalOverNoise
bool moduleswitchcluswidthon
std::map< std::string, std::string > SubDetPhasePartMap
MonitorElement * GlobalApvCycleDBxTH2
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
void createModuleMEs(ModMEs &mod_single, uint32_t detid)
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.
MonitorElement * bookMETrend(const char *, const char *)
void fill(uint32_t &detid, float value)
MonitorElement * LayerClusterWidthProfile
void fillLayerMEs(LayerMEs &, ClusterProperties &cluster, float timeinorbit)
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
bool globalswitchcstripvscpix
Abs< T >::type abs(const T &t)
std::pair< ContainerIterator, ContainerIterator > Range
bool subdetswitchtotclusprofon
TkHistoMap * tkmapcluster
MonitorElement * NumberOfClusters
MonitorElement * SubDetTotClusterProf
void save(const std::string &filename, const std::string &path="", const std::string &pattern="", const std::string &rewrite="", const uint32_t run=0, SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, const std::string &fileupdate="RECREATE")
MonitorElement * ClusterCharge
bool globalswitchstripnoise2apvcycle
MonitorElement * bookProfile(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, const char *option="s")
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)
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 &)
MonitorElement * LayerClusterWidth
MonitorElement * LayerClusterWidthTrend
bool layerswitchclusnoiseon
bool layerswitchclusterwidthprofon
std::string createHistoId(std::string description, std::string id_type, uint32_t component_id)
T const * product() const
virtual void beginRun(const edm::Run &, const edm::EventSetup &)
bool layerswitchlocaloccupancy
T const * product() const
std::pair< std::string, std::string > getSubDetFolderAndTag(const uint32_t &detid, const TrackerTopology *tTopo)
MonitorElement * StripNoise3Cycle
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
void createLayerMEs(std::string label, int ndets)
bool layerswitchcluswidthon
edm::EDGetTokenT< edmNew::DetSetVector< SiPixelCluster > > clusterProducerPixToken_
std::map< std::string, SubDetMEs > SubDetMEsMap
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 * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
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
bool globalswitchapvcycledbxth2on
void setCurrentFolder(const std::string &fullpath)
void fillModuleMEs(ModMEs &mod_mes, ClusterProperties &cluster)
MonitorElement * LayerClusterNoiseTrend
bool moduleswitchnrclusterizedstrip
MonitorElement * bookProfile2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, int nchZ, double lowZ, double highZ, const char *option="s")
bool subdetswitchapvcycleth2on
bool moduleswitchclusdigiposon