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");
216 edm::LogInfo(
"SiStripMonitorCluster") <<
"SiStripMonitorCluster::beginRun: "
217 <<
" Creating MEs for new Cabling ";
222 edm::LogInfo(
"SiStripMonitorCluster") <<
"SiStripMonitorCluster::beginRun: "
223 <<
" Resetting MEs ";
244 std::vector<uint32_t> activeDets;
261 edm::LogInfo(
"SiStripTkDQM|SiStripMonitorCluster")<<
"nr. of activeDets: "<<activeDets.size();
262 for(std::vector<uint32_t>::iterator detid_iterator = activeDets.begin(); detid_iterator!=activeDets.end(); detid_iterator++){
263 uint32_t
detid = (*detid_iterator);
266 activeDets.erase(detid_iterator);
277 ModuleMEsMap.insert( std::make_pair(detid, mod_single));
281 std::pair<std::string,int32_t> det_layer_pair = folder_organizer.
GetSubDetAndLayer(detid, tTopo);
285 std::map<std::string, LayerMEs>::iterator iLayerME =
LayerMEsMap.find(label);
289 int32_t lnumber = det_layer_pair.second;
290 std::vector<uint32_t> layerDetIds;
291 if (det_layer_pair.first ==
"TIB") {
293 }
else if (det_layer_pair.first ==
"TOB") {
295 }
else if (det_layer_pair.first ==
"TID" && lnumber > 0) {
297 }
else if (det_layer_pair.first ==
"TID" && lnumber < 0) {
299 }
else if (det_layer_pair.first ==
"TEC" && lnumber > 0) {
301 }
else if (det_layer_pair.first ==
"TEC" && lnumber < 0) {
307 folder_organizer.
setLayerFolder(detid,tTopo,det_layer_pair.second);
422 HistoName =
"NumberOfClustersInStrip";
456 int NPixClusters=0, NStripClusters=0, MultiplicityRegion=0;
457 bool isPixValid=
false;
478 if (!cluster_detsetvektor.
isValid())
return;
481 NStripClusters= StrC->
data().size();
483 if (cluster_detsetvektor_pix.
isValid()){
487 MultiplicityRegion=
FindRegion(NStripClusters,NPixClusters);
503 for (std::map<std::string, SubDetMEs>::iterator iSubdet =
SubDetMEsMap.begin();
505 iSubdet->second.totNClusters = 0;
509 bool found_layer_me =
false;
515 int ncluster_layer = 0;
516 std::map<std::string, LayerMEs>::iterator iLayerME =
LayerMEsMap.find(layer_label);
521 layer_single = iLayerME->second;
522 found_layer_me =
true;
525 bool found_module_me =
false;
529 for (std::vector< uint32_t >::const_iterator iterDets = iterLayer->second.begin() ;
530 iterDets != iterLayer->second.end() ; iterDets++) {
533 uint32_t
detid = (*iterDets);
536 if (subdet_label.size() == 0) subdet_label = folder_organizer.
getSubDetFolderAndTag(detid, tTopo).second;
541 std::map<uint32_t, ModMEs >::iterator imodME =
ModuleMEsMap.find(detid);
543 mod_single = imodME->second;
544 found_module_me =
true;
546 }
else found_module_me =
false;
550 if(isearch==cluster_detsetvektor->end()){
573 ncluster_layer += cluster_detset.
size();
575 short total_clusterized_strips = 0;
583 const std::vector<uint8_t>& ampls = clusterIter->amplitudes();
585 float cluster_position = clusterIter->barycenter();
587 short cluster_start = clusterIter->firstStrip();
589 short cluster_width = ampls.size();
591 total_clusterized_strips = total_clusterized_strips + cluster_width;
594 float cluster_signal = 0.0;
595 float cluster_noise = 0.0;
596 int nrnonzeroamplitudes = 0;
599 for(uint iamp=0; iamp<ampls.size(); iamp++){
601 cluster_signal += ampls[iamp];
602 if(!qualityHandle->IsStripBad(qualityRange, clusterIter->firstStrip()+iamp)){
603 noise = noiseHandle->getNoise(clusterIter->firstStrip()+iamp,detNoiseRange)/gainHandle->getStripGain(clusterIter->firstStrip()+iamp, detGainRange);
605 noise2 += noise*noise;
606 nrnonzeroamplitudes++;
610 if (nrnonzeroamplitudes > 0) cluster_noise =
sqrt(noise2/nrnonzeroamplitudes);
619 cluster_properties.
charge = cluster_signal;
620 cluster_properties.
position = cluster_position;
621 cluster_properties.
start = cluster_start;
622 cluster_properties.
width = cluster_width;
623 cluster_properties.
noise = cluster_noise;
626 if (found_module_me)
fillModuleMEs(mod_single, cluster_properties);
629 if (found_layer_me) {
630 fillLayerMEs(layer_single, cluster_properties, iOrbitSec);
637 float local_occupancy =
static_cast<float>(total_clusterized_strips)/static_cast<float>(total_nr_strips);
638 if (found_module_me) {
652 std::map<std::string, SubDetMEs>::iterator iSubdet =
SubDetMEsMap.find(subdet_label);
653 if(iSubdet !=
SubDetMEsMap.end()) iSubdet->second.totNClusters += ncluster_layer;
666 && apv_phase_collection.
isValid()
670 long long dbx = event_history->deltaBX();
671 long long tbx = event_history->absoluteBX();
673 bool global_histo_filled =
false;
674 bool MultiplicityRegion_Vs_APVcycle_filled=
false;
676 for (std::map<std::string, SubDetMEs>::iterator it =
SubDetMEsMap.begin();
683 long long tbx_corr = tbx;
692 tbx_corr -= the_phase;
693 long long dbxincycle = event_history->deltaBXinCycle(the_phase);
696 global_histo_filled =
true;
699 if (isPixValid && !MultiplicityRegion_Vs_APVcycle_filled){
702 MultiplicityRegion_Vs_APVcycle_filled=
true;
735 ModMEs mod_me = pos->second;
759 hid = hidmanager.
createHistoId(
"NumberOfClusters",
"det",detid);
769 hid = hidmanager.
createHistoId(
"ClusterPosition",
"det",detid);
778 hid = hidmanager.
createHistoId(
"ClusterDigiPosition",
"det",detid);
810 hid = hidmanager.
createHistoId(
"ClusterSignalOverNoise",
"det",detid);
818 hid = hidmanager.
createHistoId(
"ClusterSignalOverNoiseVsPos",
"det",detid);
834 hid = hidmanager.
createHistoId(
"ClusterLocalOccupancy",
"det",detid);
842 hid = hidmanager.
createHistoId(
"NrOfClusterizedStrips",
"det",detid);
931 HistoName =
"TotalNumberOfCluster__" +
label;
939 HistoName =
"TotalNumberOfClusterProfile__" +
label;
954 HistoName =
"Cluster_vs_ApvCycle__" +
label;
969 HistoName =
"Cluster_vs_ApvCycle_2D__" +
label;
971 double h2ymax = 9999.0;
972 double yfact = Parameters.
getParameter<
double>(
"yfactor");
973 if(label.find(
"TIB") != std::string::npos) h2ymax = (6984.*256.)*yfact;
974 else if (label.find(
"TID") != std::string::npos) h2ymax = (2208.*256.)*yfact;
975 else if (label.find(
"TOB") != std::string::npos) h2ymax = (12906.*256.)*yfact;
976 else if (label.find(
"TEC") != std::string::npos) h2ymax = (7552.*2.*256.)*yfact;
992 HistoName =
"Cluster_vs_DeltaBxCycle__" +
label;
1006 HistoName =
"DeltaBx_vs_ApvCycle__" +
label;
1033 for(
int ipos=cluster.
start+1; ipos<=cluster.
start+cluster.
width; ipos++){
1042 if (cluster.
noise > 0)
1047 if (cluster.
noise > 0)
1089 ParametersTrend.getParameter<int32_t>(
"Nbins"),
1091 ParametersTrend.getParameter<
double>(
"xmin"),
1092 ParametersTrend.getParameter<
double>(
"xmax"),
1095 ParametersTrend.getParameter<
double>(
"ymin"),
1096 ParametersTrend.getParameter<
double>(
"ymax"),
1117 double kplus=
k0*(1+
dk0/100);
1118 double kminus=
k0*(1-
dk0/100);
1121 if (nstrip!=0 && npix >= (nstrip*kminus-
q0) && npix <=(nstrip*kplus+
q0)) region=1;
1122 else if (nstrip!=0 && npix < (nstrip*kminus-
q0) && nstrip <=
maxClus) region=2;
1123 else if (nstrip!=0 && npix < (nstrip*kminus-
q0) && nstrip >
maxClus) region=3;
1124 else if (nstrip!=0 && npix > (nstrip*kplus+
q0)) region=4;
1125 else if (npix >
minPix && nstrip==0) region=5;
edm::InputTag clusterProducerStrip_
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.
bool moduleswitchclusstonon
MonitorElement * GlobalCStripVsCpix
void save(const std::string &filename, const std::string &path="", const std::string &pattern="", const std::string &rewrite="", SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, const std::string &fileupdate="RECREATE")
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
edm::InputTag apvPhaseProducer_
MonitorElement * SubDetClusterApvTH2
bool moduleswitchclusposon
void createMEs(const edm::EventSetup &es)
bool layerswitchclusstonon
edm::InputTag clusterProducerPix_
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_
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
std::pair< ContainerIterator, ContainerIterator > Range
bool subdetswitchtotclusprofon
TkHistoMap * tkmapcluster
MonitorElement * NumberOfClusters
MonitorElement * SubDetTotClusterProf
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)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
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)
edm::InputTag historyProducer_
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
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
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
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.
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