33 hist_file =
new TFile(histoFileName.c_str(),
"RECREATE");
40 std::ostringstream
ss;
43 ss << idint <<
"_Anode_First_Time";
44 mh_FirstTime[idint] =
new TH2F(ss.str().c_str(),
"", 675, 0.0, 675.0, 50, 0.0, 10.0);
45 mh_FirstTime[idint]->GetXaxis()->SetTitle(
"(Layer-1)*Nwires+Wire");
46 mh_FirstTime[idint]->GetYaxis()->SetTitle(
"Anode First Time Bin");
52 ss <<
"Layer_Nmb_Pulses";
60 ss << idint <<
"_Anode_Wire_Eff";
61 mh_WireEff[idint] =
new TH1F(ss.str().c_str(),
"", 675, 0.0, 675.0);
62 mh_WireEff[idint]->GetXaxis()->SetTitle(
"(Layer-1)*Nwires+Wire");
63 mh_WireEff[idint]->GetYaxis()->SetTitle(
"Efficiency");
68 ss << idint <<
"_Anode_Eff";
69 mh_Eff[idint] =
new TH1F(ss.str().c_str(),
"", 110, -0.05, 1.05);
70 mh_Eff[idint]->GetXaxis()->SetTitle(
"Efficiency");
71 mh_Eff[idint]->GetYaxis()->SetTitle(
"Entries");
76 ss << idint <<
"_Anode_Wire_Pair_Layer_Crosstalk";
84 ss << idint <<
"_Anode_Pair_Layer_Crosstalk";
92 ss << idint <<
"_Anode_Wire_NonPair_Layer_Crosstalk";
100 ss << idint <<
"_Anode_NonPair_Layer_Crosstalk";
109 std::map<int, TH1*>::iterator
h;
115 h->second->Fill(x, w);
119 std::map<int, TH2*>::iterator
h;
125 h->second->Fill(x, y, w);
130 std::ostringstream
ss;
131 std::map<int, std::vector<int> >::iterator viIt;
132 std::map<int, std::vector<std::vector<float> > >::iterator vvfIt;
149 if (wirecltn.begin() == wirecltn.end())
152 if (wirecltn.begin() != wirecltn.end()) {
153 for (wiredetUnitIt = wirecltn.begin(); wiredetUnitIt != wirecltn.end(); ++wiredetUnitIt) {
154 const CSCDetId&
id = (*wiredetUnitIt).first;
155 const int idchamber =
id.
endcap() * 10000 +
id.station() * 1000 +
id.ring() * 100 +
id.chamber();
157 id.endcap() * 100000 +
id.station() * 10000 +
id.ring() * 1000 +
id.chamber() * 10 +
id.layer();
160 std::vector<int> wireplane(maxwire, 0);
164 int iwire = (*digiIt).getWireGroup();
165 if (iwire <= maxwire) {
166 if (wireplane[iwire - 1] == 0) {
167 wireplane[iwire - 1] = (*digiIt).getBeamCrossingTag() + 1;
170 x = (
id.layer() - 1) * maxwire + iwire;
171 y = wireplane[iwire - 1];
175 wireplane[iwire - 1] = 1;
189 const int idwirev = (*viIt).first;
190 const std::vector<int> wiretemp = (*viIt).second;
192 std::vector<float> zer(nsize, 0);
195 for (
unsigned int j = 0;
j < wiretemp.size();
j++)
199 for (
unsigned int i = 0;
i < (*viIt).second.size();
i++) {
200 current_layer = (*viIt).first / 10;
201 current_layer = (*viIt).first - current_layer * 10;
204 vvfIt->second[
i][1] = vvfIt->second[
i][1] + (*viIt).second[
i];
209 vvfIt->second[
i][2] = vvfIt->second[
i][2] + (*viIt).second[
i];
212 vvfIt->second[
i][2] = vvfIt->second[
i][2] + (*viIt).second[
i];
216 (pulsed_layer < 5 && current_layer > 4))
217 vvfIt->second[
i][3] = vvfIt->second[
i][3] + (*viIt).second[
i];
230 std::map<int, int>::iterator intIt;
231 std::map<int, std::vector<std::vector<float> > >::iterator vvfIt;
235 std::cout <<
"Number of pulses per layer" << std::endl;
252 int idlayer = (*vvfIt).first;
253 int idchmb = idlayer / 10;
254 int layer = idlayer - idchmb * 10;
255 for (
unsigned int i = 0;
i < (*vvfIt).second.size();
i++) {
257 (*vvfIt).second[
i][3] = (*vvfIt).second[
i][3] / 4.0;
258 (*vvfIt).second[
i][1] = (*vvfIt).second[
i][1] / (*vvfIt).second[
i][0];
259 (*vvfIt).second[
i][2] = (*vvfIt).second[
i][2] / (*vvfIt).second[
i][0];
260 (*vvfIt).second[
i][3] = (*vvfIt).second[
i][3] / (*vvfIt).second[
i][0];
262 x = (layer - 1) * (*vvfIt).second.size() + (
i + 1);
265 y = (*vvfIt).second[
i][1];
270 y = (*vvfIt).second[
i][2];
275 y = (*vvfIt).second[
i][3];
282 std::cout <<
"The following CSCs will go to DB" << std::endl << std::endl;
284 int idchmb = (*vvfIt).first / 10;
294 <<
" CSC " << (*intIt).first <<
" " << (*intIt).second << std::endl;
332 std::cout <<
" End of CSCAFEBConnectAnalysis" << std::endl;
void hf1ForId(std::map< int, TH1 * > &mp, int flag, const int &id, float &x, float w)
std::map< int, TH1 * > mh_WireNonPairCrosstalk
std::vector< int > nmbpulses
constexpr std::array< uint8_t, layerIndexSize > layer
const uint16_t range(const Frame &aFrame)
std::map< int, int > m_csc_list
Maps.
std::map< int, TH1 * > mh_Eff
if(conf_.getParameter< bool >("UseStripCablingDB"))
const CSCToAFEB csctoafeb
Layer, wire to AFEB, channel conversion.
uint16_t const *__restrict__ x
int getMaxWire(int station, int ring) const
return max. number of wiregroups per layer
std::map< int, TH1 * > mh_LayerNmbPulses
Histogram maps.
std::map< int, std::vector< std::vector< float > > > m_res_for_db
std::map< int, TH1 * > mh_WirePairCrosstalk
std::map< int, std::vector< int > > m_wire_ev
void bookForId(int flag, const int &idint, const std::string &ids)
std::map< int, TH2 * > mh_FirstTime
std::map< int, TH1 * > mh_PairCrosstalk
std::map< int, TH1 * > mh_NonPairCrosstalk
std::pair< const_iterator, const_iterator > Range
std::vector< DigiType >::const_iterator const_iterator
void setup(const std::string &histoFileName)
void hf2ForId(std::map< int, TH2 * > &mp, int flag, const int &id, float &x, float &y, float w)
TFile * hist_file
ROOT hist file.
std::map< int, TH1 * > mh_WireEff
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
void analyze(const CSCWireDigiCollection &wirecltn)