144 k0 = ClusterMultiplicityRegions.getParameter<
double>(
"k0");
145 q0 = ClusterMultiplicityRegions.getParameter<
double>(
"q0");
146 dk0 = ClusterMultiplicityRegions.getParameter<
double>(
"dk0");
147 maxClus = ClusterMultiplicityRegions.getParameter<
double>(
"MaxClus");
148 minPix = ClusterMultiplicityRegions.getParameter<
double>(
"MinPix");
193 edm::LogInfo(
"SiStripMonitorCluster") <<
"SiStripMonitorCluster::beginRun: "
194 <<
" Creating MEs for new Cabling ";
199 edm::LogInfo(
"SiStripMonitorCluster") <<
"SiStripMonitorCluster::beginRun: "
200 <<
" Resetting MEs ";
215 std::vector<uint32_t> activeDets;
232 edm::LogInfo(
"SiStripTkDQM|SiStripMonitorCluster")<<
"nr. of activeDets: "<<activeDets.size();
233 for(std::vector<uint32_t>::iterator detid_iterator = activeDets.begin(); detid_iterator!=activeDets.end(); detid_iterator++){
234 uint32_t
detid = (*detid_iterator);
237 activeDets.erase(detid_iterator);
259 ModuleMEsMap.insert( std::make_pair(detid, mod_single));
263 std::pair<std::string,int32_t> det_layer_pair = folder_organizer.
GetSubDetAndLayer(detid);
267 std::map<std::string, LayerMEs>::iterator iLayerME =
LayerMEsMap.find(label);
271 int32_t lnumber = det_layer_pair.second;
272 std::vector<uint32_t> layerDetIds;
273 if (det_layer_pair.first ==
"TIB") {
275 }
else if (det_layer_pair.first ==
"TOB") {
277 }
else if (det_layer_pair.first ==
"TID" && lnumber > 0) {
279 }
else if (det_layer_pair.first ==
"TID" && lnumber < 0) {
281 }
else if (det_layer_pair.first ==
"TEC" && lnumber > 0) {
283 }
else if (det_layer_pair.first ==
"TEC" && lnumber < 0) {
304 std::string
HistoName =
"DeltaBx_vs_ApvCycle";
319 std::string
HistoName =
"StripClusVsPixClus";
334 std::string
HistoName =
"ClusterMultiplicityRegions";
351 std::string
HistoName =
"StripNoise_ApvCycle";
361 std::string
HistoName =
"HighStripNoise_ApvCycle";
383 int NPixClusters=0, NStripClusters=0, MultiplicityRegion=0;
384 bool isPixValid=
false;
405 if (!cluster_detsetvektor.
isValid())
return;
408 NStripClusters= StrC->
data().size();
411 if (cluster_detsetvektor_pix.
isValid()){
415 MultiplicityRegion=
FindRegion(NStripClusters,NPixClusters);
422 for (std::map<std::string, SubDetMEs>::iterator iSubdet =
SubDetMEsMap.begin();
424 iSubdet->second.totNClusters = 0;
428 bool found_layer_me =
false;
429 for (
std::map<std::string, std::vector< uint32_t > >::const_iterator iterLayer =
LayerDetMap.begin();
432 std::string layer_label = iterLayer->first;
434 int ncluster_layer = 0;
435 std::map<std::string, LayerMEs>::iterator iLayerME =
LayerMEsMap.find(layer_label);
440 layer_single = iLayerME->second;
441 found_layer_me =
true;
444 bool found_module_me =
false;
446 std::string subdet_label =
"";
448 for (std::vector< uint32_t >::const_iterator iterDets = iterLayer->second.begin() ;
449 iterDets != iterLayer->second.end() ; iterDets++) {
452 uint32_t
detid = (*iterDets);
460 std::map<uint32_t, ModMEs >::iterator imodME =
ModuleMEsMap.find(detid);
462 mod_single = imodME->second;
463 found_module_me =
true;
465 }
else found_module_me =
false;
469 if(isearch==cluster_detsetvektor->end()){
492 ncluster_layer += cluster_detset.
size();
494 short total_clusterized_strips = 0;
502 const std::vector<uint8_t>& ampls = clusterIter->amplitudes();
504 float cluster_position = clusterIter->barycenter();
506 short cluster_start = clusterIter->firstStrip();
508 short cluster_width = ampls.size();
510 total_clusterized_strips = total_clusterized_strips + cluster_width;
513 float cluster_signal = 0.0;
514 float cluster_noise = 0.0;
515 int nrnonzeroamplitudes = 0;
518 for(uint iamp=0; iamp<ampls.size(); iamp++){
520 cluster_signal += ampls[iamp];
521 if(!qualityHandle->IsStripBad(qualityRange, clusterIter->firstStrip()+iamp)){
522 noise = noiseHandle->getNoise(clusterIter->firstStrip()+iamp,detNoiseRange)/gainHandle->getStripGain(clusterIter->firstStrip()+iamp, detGainRange);
524 noise2 += noise*noise;
525 nrnonzeroamplitudes++;
529 if (nrnonzeroamplitudes > 0) cluster_noise =
sqrt(noise2/nrnonzeroamplitudes);
538 cluster_properties.
charge = cluster_signal;
539 cluster_properties.
position = cluster_position;
540 cluster_properties.
start = cluster_start;
541 cluster_properties.
width = cluster_width;
542 cluster_properties.
noise = cluster_noise;
545 if (found_module_me)
fillModuleMEs(mod_single, cluster_properties);
548 if (found_layer_me) {
549 fillLayerMEs(layer_single, cluster_properties, iOrbitSec);
556 float local_occupancy =
static_cast<float>(total_clusterized_strips)/static_cast<float>(total_nr_strips);
557 if (found_module_me) {
571 std::map<std::string, SubDetMEs>::iterator iSubdet =
SubDetMEsMap.find(subdet_label);
572 if(iSubdet !=
SubDetMEsMap.end()) iSubdet->second.totNClusters += ncluster_layer;
585 && apv_phase_collection.
isValid()
589 long long dbx = event_history->deltaBX();
590 long long tbx = event_history->absoluteBX();
592 bool global_histo_filled =
false;
593 bool MultiplicityRegion_Vs_APVcycle_filled=
false;
595 for (std::map<std::string, SubDetMEs>::iterator it =
SubDetMEsMap.begin();
597 std::string sdet = it->first;
602 long long tbx_corr = tbx;
611 tbx_corr -= the_phase;
612 long long dbxincycle = event_history->deltaBXinCycle(the_phase);
615 global_histo_filled =
true;
618 if (isPixValid && !MultiplicityRegion_Vs_APVcycle_filled){
621 MultiplicityRegion_Vs_APVcycle_filled=
true;
648 ModMEs mod_me = pos->second;
672 hid = hidmanager.
createHistoId(
"NumberOfClusters",
"det",detid);
682 hid = hidmanager.
createHistoId(
"ClusterPosition",
"det",detid);
691 hid = hidmanager.
createHistoId(
"ClusterDigiPosition",
"det",detid);
723 hid = hidmanager.
createHistoId(
"ClusterSignalOverNoise",
"det",detid);
731 hid = hidmanager.
createHistoId(
"ClusterSignalOverNoiseVsPos",
"det",detid);
747 hid = hidmanager.
createHistoId(
"ClusterLocalOccupancy",
"det",detid);
755 hid = hidmanager.
createHistoId(
"NrOfClusterizedStrips",
"det",detid);
815 std::string hid = hidmanager.
createHistoLayer(
"NumberOfClusterProfile",
"layer",label,
"");
821 std::string hid = hidmanager.
createHistoLayer(
"ClusterWidthProfile",
"layer",label,
"");
844 HistoName =
"TotalNumberOfCluster__" +
label;
852 HistoName =
"TotalNumberOfClusterProfile__" +
label;
867 HistoName =
"Cluster_vs_ApvCycle__" +
label;
882 HistoName =
"Cluster_vs_ApvCycle_2D__" +
label;
884 double h2ymax = 9999.0;
885 double yfact = Parameters.
getParameter<
double>(
"yfactor");
886 if(label.find(
"TIB") != std::string::npos) h2ymax = (6984.*256.)*yfact;
887 else if (label.find(
"TID") != std::string::npos) h2ymax = (2208.*256.)*yfact;
888 else if (label.find(
"TOB") != std::string::npos) h2ymax = (12906.*256.)*yfact;
889 else if (label.find(
"TEC") != std::string::npos) h2ymax = (7552.*2.*256.)*yfact;
905 HistoName =
"Cluster_vs_DeltaBxCycle__" +
label;
919 HistoName =
"DeltaBx_vs_ApvCycle__" +
label;
946 for(
int ipos=cluster.
start+1; ipos<=cluster.
start+cluster.
width; ipos++){
955 if (cluster.
noise > 0)
960 if (cluster.
noise > 0)
1002 ParametersTrend.getParameter<int32_t>(
"Nbins"),
1004 ParametersTrend.getParameter<
double>(
"xmin"),
1005 ParametersTrend.getParameter<
double>(
"xmax"),
1008 ParametersTrend.getParameter<
double>(
"ymin"),
1009 ParametersTrend.getParameter<
double>(
"ymax"),
1030 double kplus=
k0*(1+
dk0/100);
1031 double kminus=
k0*(1-
dk0/100);
1034 if (nstrip!=0 && npix >= (nstrip*kminus-
q0) && npix <=(nstrip*kplus+
q0)) region=1;
1035 else if (nstrip!=0 && npix < (nstrip*kminus-
q0) && nstrip <=
maxClus) region=2;
1036 else if (nstrip!=0 && npix < (nstrip*kminus-
q0) && nstrip >
maxClus) region=3;
1037 else if (nstrip!=0 && npix > (nstrip*kplus+
q0)) region=4;
1038 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_
MonitorElement * ClusterSignalOverNoiseVsPos
MonitorElement * LayerClusterNoise
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
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
std::string getSubdetid(uint32_t id, bool flag_ring)
bool moduleswitchcluswidthon
std::map< std::string, std::string > SubDetPhasePartMap
MonitorElement * GlobalApvCycleDBxTH2
std::pair< std::string, std::string > getSubDetFolderAndTag(const uint32_t &detid)
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
MonitorElement * bookMETrend(const char *, const char *)
void fill(uint32_t &detid, float value)
MonitorElement * LayerClusterWidthProfile
void fillLayerMEs(LayerMEs &, ClusterProperties &cluster, float timeinorbit)
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
Kind kind(void) const
Get the type of the monitor element.
void setDetectorFolder(uint32_t rawdetid=0)
vector< ParameterSet > Parameters
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
MonitorElement * LayerClusterStoNTrend
std::string topFolderName_
MonitorElement * SubDetClusterDBxCycleProf
SiStripDCSStatus * dcsStatus_
bool subdetswitchdbxcycleprofon
bool globalswitchstripnoise3apvcycle
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_
virtual void beginRun(const edm::Run &, const edm::EventSetup &)
bool layerswitchlocaloccupancy
T const * product() const
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
std::pair< std::string, int32_t > GetSubDetAndLayer(const uint32_t &detid, bool ring_flag=0)
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
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.
void setLayerFolder(uint32_t rawdetid=0, int32_t layer=0, bool ring_flag=0)
std::string qualityLabel_
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 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