1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
// -*- C++ -*-
//
// Package: SiStripQuality
// Class: SiStripHotStripAlgorithmFromClusterOccupancy
//
/**\class SiStripHotStripAlgorithmFromClusterOccupancy SiStripHotStripAlgorithmFromClusterOccupancy.h CalibTracker/SiStripQuality/src/SiStripHotStripAlgorithmFromClusterOccupancy.cc
Description: <one line class summary>
Implementation:
<Notes on implementation>
*/
//
// Original Author: Domenico GIORDANO
// Created: Wed Oct 3 12:11:10 CEST 2007
//
//
#ifndef CalibTracker_SiStripQuality_SiStripHotStripAlgorithmFromClusterOccupancy_H
#define CalibTracker_SiStripQuality_SiStripHotStripAlgorithmFromClusterOccupancy_H
// system include files
#include <memory>
#include <vector>
#include <sstream>
#include <iostream>
#include "TMath.h"
#include "TTree.h"
#include "TFile.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "DataFormats/DetId/interface/DetId.h"
#include "Geometry/TrackerGeometryBuilder/interface/StripGeomDetUnit.h"
#include "Geometry/CommonTopologies/interface/StripTopology.h"
#include "CalibFormats/SiStripObjects/interface/SiStripQuality.h"
#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
#include "CalibTracker/SiStripQuality/interface/SiStripQualityHistos.h"
#include "FWCore/ParameterSet/interface/FileInPath.h"
#include "FWCore/Framework/interface/EventSetup.h"
#include "CalibTracker/Records/interface/SiStripQualityRcd.h"
#include "FWCore/ServiceRegistry/interface/Service.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "CommonTools/TrackerMap/interface/TrackerMap.h"
class SiStripQuality;
class TrackerTopology;
class SiStripHotStripAlgorithmFromClusterOccupancy {
public:
typedef SiStrip::QualityHistosMap HistoMap;
SiStripHotStripAlgorithmFromClusterOccupancy(const edm::ParameterSet&, const TrackerTopology*);
virtual ~SiStripHotStripAlgorithmFromClusterOccupancy();
void setProbabilityThreshold(long double prob) { prob_ = prob; }
void setMinNumEntries(unsigned short m) { MinNumEntries_ = m; }
void setMinNumEntriesPerStrip(unsigned short m) { MinNumEntriesPerStrip_ = m; }
void setOccupancyThreshold(long double occupancy) {
occupancy_ = occupancy;
minNevents_ = occupancy_ * Nevents_;
}
void setNumberOfEvents(double Nevents);
void setOutputFileName(std::string OutputFileName, bool WriteOutputFile) {
OutFileName_ = OutputFileName;
WriteOutputFile_ = WriteOutputFile;
}
void setTrackerGeometry(const TrackerGeometry* tkgeom) { TkGeom = tkgeom; }
void extractBadStrips(SiStripQuality*, HistoMap&, const SiStripQuality*);
private:
struct pHisto {
pHisto() : _NEntries(0), _NEmptyBins(0), _SubdetId(0) {}
TH1F* _th1f;
int _NEntries;
int _NEmptyBins;
int _SubdetId;
};
void iterativeSearch(pHisto&, std::vector<unsigned int>&, int);
void evaluatePoissonian(std::vector<long double>&, long double& meanVal);
long double prob_;
long double ratio_;
unsigned short MinNumEntries_;
unsigned short MinNumEntriesPerStrip_;
double Nevents_;
double minNevents_;
long double occupancy_;
std::string OutFileName_;
bool WriteOutputFile_;
const TrackerGeometry* TkGeom;
const TrackerTopology* tTopo;
SiStripQuality* pQuality;
TFile* f;
TTree* striptree;
bool UseInputDB_;
int detrawid;
int subdetid;
int layer_ring;
int disc;
int isback;
int isexternalstring;
int iszminusside;
int rodstringpetal;
int isstereo;
int module_position;
int number_strips;
int strip_number;
int apv_channel;
float global_position_x;
float global_position_y;
float global_position_z;
int isHot;
int hotStripsPerAPV;
int hotStripsPerModule;
double stripOccupancy;
int stripHits;
double medianAPVHits;
double avgAPVHits;
double poissonProb;
int ishot[768];
int hotstripsperapv[6];
int hotstripspermodule;
double stripoccupancy[768];
int striphits[768];
double poissonprob[768];
double medianapvhits[6];
double avgapvhits[6];
std::stringstream ss;
};
#endif
|