60 std::cout <<
"EcalSimpleTBAnalyzer: fetching hitCollection: " << hitCollection_.c_str() <<
" produced by "
61 << hitProducer_.c_str() << std::endl;
97 h_ampltdc =
new TH2F(
"h_ampltdc",
"Max Amplitude vs TDC offset", 100, 0., 1., 1000, 0., 4000.);
100 h_tableIsMoving =
new TH1F(
"h_tableIsMoving",
"TableIsMoving", 100000, 0., 100000.);
102 h_e1x1 =
new TH1F(
"h_e1x1",
"E1x1 energy", 1000, 0., 4000.);
103 h_e3x3 =
new TH1F(
"h_e3x3",
"E3x3 energy", 1000, 0., 4000.);
104 h_e5x5 =
new TH1F(
"h_e5x5",
"E5x5 energy", 1000, 0., 4000.);
106 h_e1x1_center =
new TH1F(
"h_e1x1_center",
"E1x1 energy", 1000, 0., 4000.);
107 h_e3x3_center =
new TH1F(
"h_e3x3_center",
"E3x3 energy", 1000, 0., 4000.);
108 h_e5x5_center =
new TH1F(
"h_e5x5_center",
"E5x5 energy", 1000, 0., 4000.);
110 h_e1e9 =
new TH1F(
"h_e1e9",
"E1/E9 ratio", 600, 0., 1.2);
111 h_e1e25 =
new TH1F(
"h_e1e25",
"E1/E25 ratio", 600, 0., 1.2);
112 h_e9e25 =
new TH1F(
"h_e9e25",
"E9/E25 ratio", 600, 0., 1.2);
114 h_bprofx =
new TH1F(
"h_bprofx",
"Beam Profile X", 100, -20., 20.);
115 h_bprofy =
new TH1F(
"h_bprofy",
"Beam Profile Y", 100, -20., 20.);
117 h_qualx =
new TH1F(
"h_qualx",
"Beam Quality X", 5000, 0., 5.);
118 h_qualy =
new TH1F(
"h_qualy",
"Beam Quality X", 5000, 0., 5.);
120 h_slopex =
new TH1F(
"h_slopex",
"Beam Slope X", 500, -5
e-4, 5
e-4);
121 h_slopey =
new TH1F(
"h_slopey",
"Beam Slope Y", 500, -5
e-4, 5
e-4);
125 for (
unsigned int icry = 0; icry < 25; icry++) {
126 sprintf(hname,
"h_mapx_%d", icry);
127 sprintf(htitle,
"Max Amplitude vs X %d", icry);
128 h_mapx[icry] =
new TH2F(hname, htitle, 80, -20, 20, 1000, 0., 4000.);
129 sprintf(hname,
"h_mapy_%d", icry);
130 sprintf(htitle,
"Max Amplitude vs Y %d", icry);
131 h_mapy[icry] =
new TH2F(hname, htitle, 80, -20, 20, 1000, 0., 4000.);
134 h_e1e9_mapx =
new TH2F(
"h_e1e9_mapx",
"E1/E9 vs X", 80, -20, 20, 600, 0., 1.2);
135 h_e1e9_mapy =
new TH2F(
"h_e1e9_mapy",
"E1/E9 vs Y", 80, -20, 20, 600, 0., 1.2);
137 h_e1e25_mapx =
new TH2F(
"h_e1e25_mapx",
"E1/E25 vs X", 80, -20, 20, 600, 0., 1.2);
138 h_e1e25_mapy =
new TH2F(
"h_e1e25_mapy",
"E1/E25 vs Y", 80, -20, 20, 600, 0., 1.2);
140 h_e9e25_mapx =
new TH2F(
"h_e9e25_mapx",
"E9/E25 vs X", 80, -20, 20, 600, 0., 1.2);
141 h_e9e25_mapy =
new TH2F(
"h_e9e25_mapy",
"E9/E25 vs Y", 80, -20, 20, 600, 0., 1.2);
143 h_Shape_ =
new TH2F(
"h_Shape_",
"Xtal in Beam Shape", 250, 0, 10, 350, 0, 3500);
179 for (
unsigned int icry = 0; icry < 25; icry++) {
213 if (pdigis.isValid()) {
214 digis = pdigis.product();
225 if (
phits.isValid()) {
226 hits =
phits.product();
236 if (pHodo.isValid()) {
237 recHodo = pHodo.product();
246 if (pTDC.isValid()) {
247 recTDC = pTDC.product();
256 if (pEventHeader.isValid()) {
257 evtHeader = pEventHeader.product();
277 if (evtHeader->tableIsMoving())
287 if (evtHeader->tableIsMoving())
314 for (
unsigned int icry = 0; icry < 25; icry++) {
315 unsigned int row = icry / 5;
316 unsigned int column = icry % 5;
320 if (tempId.
ism() == 1)
321 Xtals5x5[icry] = tempId;
327 double samples_save[10];
328 for (
int i = 0;
i < 10; ++
i)
329 samples_save[
i] = 0.0;
334 if (myDg != digis->end()) {
338 samples_save[
sample] = analogSample;
340 if (eMax < analogSample) {
347 for (
int i = 0;
i < 10; ++
i) {
348 h_Shape_->Fill(
double(
i) + recTDC->offset(), samples_save[
i]);
351 double amplitude[25];
353 double amplitude3x3 = 0;
354 double amplitude5x5 = 0;
356 for (
unsigned int icry = 0; icry < 25; icry++) {
357 if (!Xtals5x5[icry].null()) {
358 amplitude[icry] = (hits->find(Xtals5x5[icry]))->amplitude();
359 amplitude5x5 += amplitude[icry];
361 if (icry == 6 || icry == 7 || icry == 8 || icry == 11 || icry == 12 || icry == 13 || icry == 16 || icry == 17 ||
363 amplitude3x3 += amplitude[icry];
368 h_e1x1->Fill(amplitude[12]);
369 h_e3x3->Fill(amplitude3x3);
370 h_e5x5->Fill(amplitude5x5);
372 h_e1e9->Fill(amplitude[12] / amplitude3x3);
373 h_e1e25->Fill(amplitude[12] / amplitude5x5);
374 h_e9e25->Fill(amplitude3x3 / amplitude5x5);
377 h_ampltdc->Fill(recTDC->offset(), amplitude[12]);
380 float x = recHodo->posX();
381 float y = recHodo->posY();
382 float xslope = recHodo->slopeX();
383 float yslope = recHodo->slopeY();
384 float xqual = recHodo->qualX();
385 float yqual = recHodo->qualY();
397 if (fabs(x + 2.5) < 2.5 && fabs(y + 0.5) < 2.5) {
402 h_e1e9->Fill(amplitude[12] / amplitude3x3);
403 h_e1e25->Fill(amplitude[12] / amplitude5x5);
404 h_e9e25->Fill(amplitude3x3 / amplitude5x5);
407 for (
unsigned int icry = 0; icry < 25; icry++) {
408 h_mapx[icry]->Fill(x, amplitude[icry]);
409 h_mapy[icry]->Fill(y, amplitude[icry]);
412 h_e1e9_mapx->Fill(x, amplitude[12] / amplitude3x3);
413 h_e1e9_mapy->Fill(y, amplitude[12] / amplitude3x3);
T getUntrackedParameter(std::string const &, T const &) const
std::string hodoRecInfoCollection_
std::string eventHeaderProducer_
std::string digiProducer_
std::string eventHeaderCollection_
constexpr bool null() const
is this a null id ?
void analyze(const edm::Event &, const edm::EventSetup &) override
EcalMGPASample sample(int i) const
Log< level::Error, false > LogError
~EcalSimpleTBAnalyzer() override
int ism() const
get the ECAL/SM id
int iphi() const
get the crystal iphi
std::string hodoRecInfoProducer_
int ieta() const
get the crystal ieta
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
static const int ETAPHIMODE
int ic() const
get ECAL/crystal number inside SM
std::string tdcRecInfoCollection_
EcalSimpleTBAnalyzer(const edm::ParameterSet &)
std::string tdcRecInfoProducer_
T getParameter(std::string const &) const
boost::transform_iterator< IterHelp, boost::counting_iterator< int > > const_iterator
std::string digiCollection_
static const int SMCRYSTALMODE
caConstants::TupleMultiplicity const *__restrict__ HitsOnGPU const *__restrict__ tindex_type *__restrict__ double *__restrict__ phits
int adc() const
get the ADC sample (12 bits)
std::string hitCollection_