@@ -66,24 +66,26 @@ struct UccZdc {
6666 Configurable<float > maxT0CcentCut{" maxT0CcentCut" , 90.0 , " Max T0C Cent. cut" };
6767
6868 // Track selection settings
69- Configurable<int > minItsNclusters{" minItsNclusters" , 5 ,
70- " minimum number of ITS clusters" };
71- Configurable<int > minTpcNclusters{" minTpcNclusters" , 70 ,
72- " minimum number of TPC clusters" };
73- Configurable<int > minTpcNcrossedRows{" minTpcNcrossedRows" , 70 , " minimum number of TPC crossed pad rows" };
74- Configurable<double > maxChiSquareTpc{" maxChiSquareTpc" , 4.0 , " maximum TPC chi^2/Ncls" };
75- Configurable<double > maxChiSquareIts{" maxChiSquareIts" , 36.0 ,
76- " maximum ITS chi^2/Ncls" };
69+ // Configurable<int> minItsNclusters{"minItsNclusters", 5,
70+ // "minimum number of ITS clusters"};
71+ // Configurable<int> minTpcNclusters{"minTpcNclusters", 70,
72+ // "minimum number of TPC clusters"};
73+ // Configurable<int> minTpcNcrossedRows{
74+ // "minTpcNcrossedRows", 70, "minimum number of TPC crossed pad rows"};
75+ // Configurable<double> maxChiSquareTpc{"maxChiSquareTpc", 4.0,
76+ // "maximum TPC chi^2/Ncls"};
77+ // Configurable<double> maxChiSquareIts{"maxChiSquareIts", 36.0,
78+ // "maximum ITS chi^2/Ncls"};
7779 Configurable<double > minPt{" minPt" , 0.1 , " minimum pt of the tracks" };
7880 Configurable<double > maxPt{" maxPt" , 50 ., " maximum pt of the tracks" };
7981 Configurable<double > minEta{" minEta" , -0.8 , " minimum eta" };
8082 Configurable<double > maxEta{" maxEta" , +0.8 , " maximum eta" };
81- Configurable<double > maxDcaxy{" maxDcaxy" , 0.05 , " Maximum DCAxy" };
82- Configurable<double > maxDcaz{" maxDcaz" , 0.05 , " Maximum DCAz" };
83- Configurable<bool > setDCAselectionPtDep{" setDCAselectionPtDep" , true ,
84- " require pt dependent selection" };
85- Configurable<double > par0{" par0" , 0.0105 , " par 0" };
86- Configurable<double > par1{" par1" , 0.035 , " par 1" };
83+ // Configurable<double> maxDcaxy{"maxDcaxy", 0.05, "Maximum DCAxy"};
84+ // Configurable<double> maxDcaz{"maxDcaz", 0.05, "Maximum DCAz"};
85+ // Configurable<bool> setDCAselectionPtDep{"setDCAselectionPtDep", true,
86+ // "require pt dependent selection"};
87+ // Configurable<double> par0{"par0", 0.0105, "par 0"};
88+ // Configurable<double> par1{"par1", 0.035, "par 1"};
8789 // Configurables, binning
8890 Configurable<int > nBinsAmpFV0{" nBinsAmpFV0" , 1000 ,
8991 " Number of bins FV0 amplitude" };
@@ -94,6 +96,7 @@ struct UccZdc {
9496 Configurable<int > nBinsNch{" nBinsNch" , 2500 , " # of bins for midrapidity Nch" };
9597 Configurable<float > maxNch{" maxNch" , 2500 , " Max Nch at midrapidity" };
9698 Configurable<int > nBinsZDC{" nBinsZDC" , 1025 , " nBinsZDC" };
99+ Configurable<int > nBinsZEM{" nBinsZEM" , 100 , " nBinsZEM" };
97100 Configurable<float > maxZN{" maxZN" , 4099.5 , " Max ZN signal" };
98101 Configurable<float > maxZP{" maxZP" , 3099.5 , " Max ZP signal" };
99102 Configurable<float > maxZEM{" maxZEM" , 3099.5 , " Max ZEM signal" };
@@ -103,18 +106,22 @@ struct UccZdc {
103106 Configurable<float > minMeanpT{" minMeanpT" , 0.5 , " minimum [pT]" };
104107 Configurable<float > maxMeanpT{" maxMeanpT" , 1.1 , " maximum [pT]" };
105108 Configurable<int > nBinsMeanpT{" nBinsMeanpT" , 160 , " # bins [pT]" };
106- ConfigurableAxis binsPt{" binsPt" , {VARIABLE_WIDTH, 0 ., 0.1 , 0.25 , 0.5 , 1 ., 2 ., 4 ., 6 ., 8 ., 10 ., 20 .}, " Binning of the pT axis " };
107- ConfigurableAxis binsCent{" binsCent" , {VARIABLE_WIDTH, 0 ., 10 ., 20 ., 30 ., 40 ., 50 ., 60 ., 70 ., 80 ., 90 ., 100 .}, " T0C centrality binning" };
109+ ConfigurableAxis binsPt{" binsPt" , {VARIABLE_WIDTH, 0 ., 0.1 , 0.25 , 0.5 , 1 ., 2 ., 4 ., 6 ., 8 ., 10 ., 20 .}, " pT binning " };
110+ ConfigurableAxis binsCent{" binsCent" , {VARIABLE_WIDTH, 0 ., 10 ., 20 ., 30 ., 40 ., 50 ., 60 ., 70 ., 80 ., 90 ., 100 .}, " T0C binning" };
108111
109112 // Configurable flags ZDC
113+ Configurable<bool > isAmpZDC{" isAmpZDC" , false , " Use amplitude ZDC?" };
114+ Configurable<bool > isCommPMT{" isCommPMT" , false , " Use common PMT ZDC?" };
115+ Configurable<bool > isSumTowers{" isSumTowers" , false , " Use sum of Tow ZDC?" };
110116 Configurable<bool > isTDCcut{" isTDCcut" , false , " Use TDC cut?" };
111117 Configurable<bool > isZEMcut{" isZEMcut" , true , " Use ZEM cut?" };
112118 Configurable<float > zemCut{" zemCut" , 1000.0 , " ZEM cut" };
113119 Configurable<float > tdcCut{" tdcCut" , 1.0 , " TDC cut" };
114- Configurable<float > tdcZNmincut{" tdcZNmincut" , -4.0 , " Min ZN TDC cut" };
115- Configurable<float > tdcZNmaxcut{" tdcZNmaxcut" , -4.0 , " Max ZN TDC cut" };
116- Configurable<float > tdcZPmincut{" tdcZPmincut" , -4.0 , " Min ZP TDC cut" };
117- Configurable<float > tdcZPmaxcut{" tdcZPmaxcut" , -4.0 , " Max ZP TDC cut" };
120+
121+ // Configurable<float> tdcZNmincut{"tdcZNmincut", -4.0, "Min ZN TDC cut"};
122+ // Configurable<float> tdcZNmaxcut{"tdcZNmaxcut", -4.0, "Max ZN TDC cut"};
123+ // Configurable<float> tdcZPmincut{"tdcZPmincut", -4.0, "Min ZP TDC cut"};
124+ // Configurable<float> tdcZPmaxcut{"tdcZPmaxcut", -4.0, "Max ZP TDC cut"};
118125
119126 // Filters
120127 Filter collFilter = (nabs(aod::collision::posZ) < posZcut);
@@ -185,10 +192,6 @@ struct UccZdc {
185192 registryData.get <TH1>(HIST (" hEventCounter" ))
186193 ->GetXaxis ()
187194 ->SetBinLabel (8 , " min < t0c < max" );
188- registryData.add (" ZNAcomm" , " ; ZNA common energy; Entries" ,
189- {HistType::kTH1F , {{nBinsZDC, -0.5 , maxZN}}});
190- registryData.add (" ZNCcomm" , " ; ZNC common energy; Entries" ,
191- {HistType::kTH1F , {{nBinsZDC, -0.5 , maxZN}}});
192195 registryData.add (" ZNA" , " ZNA; ZNA amplitude; Entries" ,
193196 {HistType::kTH1F , {{nBinsZDC, -0.5 , maxZN}}});
194197 registryData.add (" ZPA" , " ZPA; ZPA amplitude; Entries" ,
@@ -198,12 +201,12 @@ struct UccZdc {
198201 registryData.add (" ZPC" , " ZPC; ZPC amplitude; Entries" ,
199202 {HistType::kTH1F , {{nBinsZDC, -0.5 , maxZP}}});
200203 registryData.add (" ZEM1" , " ZEM1; ZEM1 amplitude; Entries" ,
201- {HistType::kTH1F , {{nBinsZDC , -0.5 , maxZEM}}});
204+ {HistType::kTH1F , {{nBinsZEM , -0.5 , maxZEM}}});
202205 registryData.add (" ZEM2" , " ZEM2; ZEM2 amplitude; Entries" ,
203- {HistType::kTH1F , {{nBinsZDC , -0.5 , maxZEM}}});
206+ {HistType::kTH1F , {{nBinsZEM , -0.5 , maxZEM}}});
204207 registryData.add (" ZNvsZEM" , " ZNvsZEM; ZEM; ZNA+ZNC" ,
205208 {HistType::kTH2F ,
206- {{{nBinsZDC, -0.5 , maxZEM}, {nBinsZDC , -0.5 , maxZN}}}});
209+ {{{nBinsZDC, -0.5 , maxZEM}, {nBinsZEM , -0.5 , maxZN}}}});
207210 registryData.add (" ZNAvsZNC" , " ZNAvsZNC; ZNC; ZNA" ,
208211 {HistType::kTH2F ,
209212 {{{nBinsZDC, -0.5 , maxZN}, {nBinsZDC, -0.5 , maxZN}}}});
@@ -231,11 +234,11 @@ struct UccZdc {
231234 registryData.add (
232235 " ZEM1vstdc" , " ZEM1vstdc; time ZEM1; ZEM1" ,
233236 {HistType::kTH2F ,
234- {{{nBinsTDC, minTdc, maxTdc}, {nBinsZDC , -0.5 , maxZEM}}}});
237+ {{{nBinsTDC, minTdc, maxTdc}, {nBinsZEM , -0.5 , maxZEM}}}});
235238 registryData.add (
236239 " ZEM2vstdc" , " ZEM2vstdc; time ZEM2; ZEM2" ,
237240 {HistType::kTH2F ,
238- {{{nBinsTDC, minTdc, maxTdc}, {nBinsZDC , -0.5 , maxZEM}}}});
241+ {{{nBinsTDC, minTdc, maxTdc}, {nBinsZEM , -0.5 , maxZEM}}}});
239242 registryData.add (
240243 " debunch" , " ZN sum vs. ZN diff.; t_{ZDC}-t_{ZDA}; t_{ZDC}+t_{ZDA}" ,
241244 {HistType::kTH2F ,
@@ -329,28 +332,65 @@ struct UccZdc {
329332 }
330333 registryData.fill (HIST (" hEventCounter" ), 2.5 );
331334
332- auto aZNA = foundBC.zdc ().amplitudeZNA ();
333- auto aZNC = foundBC.zdc ().amplitudeZNC ();
334- auto aZPA = foundBC.zdc ().amplitudeZPA ();
335- auto aZPC = foundBC.zdc ().amplitudeZPC ();
336- auto aZEM1 = foundBC.zdc ().amplitudeZEM1 ();
337- auto aZEM2 = foundBC.zdc ().amplitudeZEM2 ();
338- auto tZEM1 = foundBC.zdc ().timeZEM1 ();
339- auto tZEM2 = foundBC.zdc ().timeZEM2 ();
340- auto tZNA = foundBC.zdc ().timeZNA ();
341- auto tZNC = foundBC.zdc ().timeZNC ();
342- auto tZPA = foundBC.zdc ().timeZPA ();
343- auto tZPC = foundBC.zdc ().timeZPC ();
344- double tZDCdif{tZNC + tZPC - tZNA - tZPA};
345- double tZDCsum{tZNC + tZPC + tZNA + tZPA};
346- float sumZNs{aZNA + aZNC};
347- float sumT0s{0 .};
348- float aT0A{0 .};
349- float aT0C{0 .};
350- float aV0A{0 .};
351- double sumZEMs{0 .};
335+ float aT0A{0.0 };
336+ float aT0C{0.0 };
337+ float aV0A{0.0 };
338+ float sumT0s{0.0 };
339+ float znA{0.0 };
340+ float znC{0.0 };
341+ float zpA{0.0 };
342+ float zpC{0.0 };
343+ float aZEM1{0.0 };
344+ float aZEM2{0.0 };
345+ float tZEM1{0.0 };
346+ float tZEM2{0.0 };
347+ float tZNA{0.0 };
348+ float tZNC{0.0 };
349+ float tZPA{0.0 };
350+ float tZPC{0.0 };
351+ float sumZNs{0.0 };
352+ float sumZEMs{0.0 };
353+ float tZDCdif{0.0 };
354+ float tZDCsum{0.0 };
355+
356+ aZEM1 = foundBC.zdc ().amplitudeZEM1 ();
357+ aZEM2 = foundBC.zdc ().amplitudeZEM2 ();
358+ tZEM1 = foundBC.zdc ().timeZEM1 ();
359+ tZEM2 = foundBC.zdc ().timeZEM2 ();
360+ tZNA = foundBC.zdc ().timeZNA ();
361+ tZNC = foundBC.zdc ().timeZNC ();
362+ tZPA = foundBC.zdc ().timeZPA ();
363+ tZPC = foundBC.zdc ().timeZPC ();
364+ tZDCdif = tZNC + tZPC - tZNA - tZPA;
365+ tZDCsum = tZNC + tZPC + tZNA + tZPA;
366+
367+ if (isAmpZDC) {
368+ znA = foundBC.zdc ().amplitudeZNA ();
369+ znC = foundBC.zdc ().amplitudeZNC ();
370+ zpA = foundBC.zdc ().amplitudeZPA ();
371+ zpC = foundBC.zdc ().amplitudeZPC ();
372+ } else if (isCommPMT) {
373+ znA = foundBC.zdc ().energyCommonZNA ();
374+ znC = foundBC.zdc ().energyCommonZNC ();
375+ zpA = foundBC.zdc ().energyCommonZPA ();
376+ zpC = foundBC.zdc ().energyCommonZPC ();
377+ } else if (isSumTowers) {
378+ for (const auto & eZNA : foundBC.zdc ().energySectorZNA ())
379+ znA += eZNA;
380+ for (const auto & eZNC : foundBC.zdc ().energySectorZNC ())
381+ znC += eZNC;
382+ for (const auto & eZPA : foundBC.zdc ().energySectorZPA ())
383+ zpA += eZPA;
384+ for (const auto & eZPC : foundBC.zdc ().energySectorZPC ())
385+ zpC += eZPC;
386+ } else {
387+ znA = -999 .;
388+ znC = -999 .;
389+ zpA = -999 .;
390+ zpC = -999 .;
391+ }
392+ sumZNs = znA + znC;
352393 sumZEMs = aZEM1 + aZEM2;
353- float nchTPC = collision.multTPC ();
354394
355395 if (foundBC.has_ft0 ()) {
356396 for (const auto & amplitude : foundBC.ft0 ().amplitudeA ()) {
@@ -399,32 +439,26 @@ struct UccZdc {
399439
400440 registryData.fill (HIST (" hEventCounter" ), 7.5 );
401441 registryData.fill (HIST (" hT0C_cent" ), collision.centFT0C ());
402- registryData.get <TH1>(HIST (" ZNA" ))->Fill (aZNA);
403- registryData.get <TH1>(HIST (" ZNC" ))->Fill (aZNC);
404- registryData.get <TH1>(HIST (" ZPA" ))->Fill (aZPA);
405- registryData.get <TH1>(HIST (" ZPC" ))->Fill (aZPC);
406- registryData.get <TH2>(HIST (" ZNAvsZNC" ))->Fill (aZNC, aZNA);
407- registryData.get <TH2>(HIST (" ZNAvsZPA" ))->Fill (aZPA, aZNA);
408- registryData.get <TH2>(HIST (" ZNCvsZPC" ))->Fill (aZPC, aZNC);
409- registryData.get <TH2>(HIST (" ZPAvsZPC" ))->Fill (aZPC, aZPA);
410- registryData.get <TH2>(HIST (" ZNAvsNch" ))->Fill (nchTPC, aZNA);
411- registryData.get <TH2>(HIST (" ZNCvsNch" ))->Fill (nchTPC, aZNC);
412- registryData.get <TH2>(HIST (" ZNvsZEM" ))->Fill (sumZEMs, sumZNs);
413- registryData.get <TH2>(HIST (" ZNvsFV0A" ))->Fill (aV0A / 100 ., sumZNs);
414- registryData.get <TH2>(HIST (" ZNvsFT0" ))->Fill (sumT0s / 100 ., sumZNs);
415- registryData.get <TH1>(HIST (" ZNAcomm" ))
416- ->Fill (foundBC.zdc ().energyCommonZNA ());
417- registryData.get <TH1>(HIST (" ZNCcomm" ))
418- ->Fill (foundBC.zdc ().energyCommonZNC ());
419- registryData.get <TH1>(HIST (" ZEM1" ))->Fill (aZEM1);
420- registryData.get <TH1>(HIST (" ZEM2" ))->Fill (aZEM2);
421- registryData.get <TH2>(HIST (" ZNCvstdc" ))->Fill (tZNC, aZNC);
422- registryData.get <TH2>(HIST (" ZNAvstdc" ))->Fill (tZNA, aZNA);
423- registryData.get <TH2>(HIST (" ZPCvstdc" ))->Fill (tZPC, aZPC);
424- registryData.get <TH2>(HIST (" ZPAvstdc" ))->Fill (tZPA, aZPA);
425- registryData.get <TH2>(HIST (" ZEM1vstdc" ))->Fill (tZEM1, aZEM1);
426- registryData.get <TH2>(HIST (" ZEM2vstdc" ))->Fill (tZEM2, aZEM2);
427- registryData.get <TH2>(HIST (" debunch" ))->Fill (tZDCdif, tZDCsum);
442+ registryData.fill (HIST (" ZNA" ), znA);
443+ registryData.fill (HIST (" ZNC" ), znC);
444+ registryData.fill (HIST (" ZPA" ), zpA);
445+ registryData.fill (HIST (" ZPC" ), zpC);
446+ registryData.fill (HIST (" ZNAvsZNC" ), znC, znA);
447+ registryData.fill (HIST (" ZNAvsZPA" ), zpA, znA);
448+ registryData.fill (HIST (" ZNCvsZPC" ), zpC, znC);
449+ registryData.fill (HIST (" ZPAvsZPC" ), zpC, zpA);
450+ registryData.fill (HIST (" ZNvsZEM" ), sumZEMs, sumZNs);
451+ registryData.fill (HIST (" ZNvsFV0A" ), aV0A / 100 ., sumZNs);
452+ registryData.fill (HIST (" ZNvsFT0" ), sumT0s / 100 ., sumZNs);
453+ registryData.fill (HIST (" ZEM1" ), aZEM1);
454+ registryData.fill (HIST (" ZEM2" ), aZEM2);
455+ registryData.fill (HIST (" ZNCvstdc" ), tZNC, znC);
456+ registryData.fill (HIST (" ZNAvstdc" ), tZNA, znA);
457+ registryData.fill (HIST (" ZPCvstdc" ), tZPC, zpC);
458+ registryData.fill (HIST (" ZPAvstdc" ), tZPA, zpA);
459+ registryData.fill (HIST (" ZEM1vstdc" ), tZEM1, aZEM1);
460+ registryData.fill (HIST (" ZEM2vstdc" ), tZEM2, aZEM2);
461+ registryData.fill (HIST (" debunch" ), tZDCdif, tZDCsum);
428462
429463 float meanpT{0.0 };
430464 const int64_t nch{tracks.size ()};
@@ -433,7 +467,6 @@ struct UccZdc {
433467 // if (!track.isGlobalTrack()) {
434468 // continue;
435469 // }
436-
437470 // if (track.pt() < minPt || track.pt() > maxPt) {
438471 // continue;
439472 // }
@@ -450,8 +483,10 @@ struct UccZdc {
450483 if (nch > 0 ) {
451484 meanpT /= nch;
452485 }
453- registryData.get <TH3>(HIST (" ZNCvsNchvspT" ))->Fill (nch, aZNC, meanpT);
454- registryData.get <TH3>(HIST (" ZNAvsNchvspT" ))->Fill (nch, aZNA, meanpT);
486+ registryData.fill (HIST (" ZNAvsNch" ), nch, znA);
487+ registryData.fill (HIST (" ZNCvsNch" ), nch, znC);
488+ registryData.fill (HIST (" ZNCvsNchvspT" ), nch, znC, meanpT);
489+ registryData.fill (HIST (" ZNAvsNchvspT" ), nch, znA, meanpT);
455490 }
456491 PROCESS_SWITCH (UccZdc, processZdcCollAss,
457492 " Processing ZDC w. collision association" , true );
@@ -617,44 +652,31 @@ struct UccZdc {
617652 PROCESS_SWITCH (UccZdc, processMC, " process pure simulation" , false );
618653
619654 // Single-Track Selection
620- template <typename T2>
621- bool passedTrackSelection (const T2& track)
622- {
623- if (track.eta () < minEta || track.eta () > maxEta)
624- return false ;
625- if (track.pt () < minPt)
626- return false ;
627-
628- if (!track.hasITS ())
629- return false ;
630- if (track.itsNCls () < minItsNclusters)
631- return false ;
632- if (!track.hasTPC ())
633- return false ;
634- if (track.tpcNClsFound () < minTpcNclusters)
635- return false ;
636- if (track.tpcNClsCrossedRows () < minTpcNcrossedRows)
637- return false ;
638- if (track.tpcChi2NCl () > maxChiSquareTpc)
639- return false ;
640- if (track.itsChi2NCl () > maxChiSquareIts)
641- return false ;
642- // pt-dependent selection
643- if (setDCAselectionPtDep) {
644- if (std::fabs (track.dcaXY ()) > (par0 + par1 / track.pt ()))
645- return false ;
646- if (std::fabs (track.dcaZ ()) > (par0 + par1 / track.pt ()))
647- return false ;
648- }
649- // standard selection
650- if (!setDCAselectionPtDep) {
651- if (std::fabs (track.dcaXY ()) > maxDcaxy)
652- return false ;
653- if (std::fabs (track.dcaZ ()) > maxDcaz)
654- return false ;
655- }
656- return true ;
657- }
655+ // template <typename T2>
656+ // bool passedTrackSelection(const T2& track) {
657+ // if (track.eta() < minEta || track.eta() > maxEta) return false;
658+ // if (track.pt() < minPt) return false;
659+ //
660+ // if (!track.hasITS()) return false;
661+ // if (track.itsNCls() < minItsNclusters) return false;
662+ // if (!track.hasTPC()) return false;
663+ // if (track.tpcNClsFound() < minTpcNclusters) return false;
664+ // if (track.tpcNClsCrossedRows() < minTpcNcrossedRows) return false;
665+ // if (track.tpcChi2NCl() > maxChiSquareTpc) return false;
666+ // if (track.itsChi2NCl() > maxChiSquareIts) return false;
667+ // // pt-dependent selection
668+ // if (setDCAselectionPtDep) {
669+ // if (std::fabs(track.dcaXY()) > (par0 + par1 / track.pt())) return
670+ // false; if (std::fabs(track.dcaZ()) > (par0 + par1 / track.pt())) return
671+ // false;
672+ // }
673+ // // standard selection
674+ // if (!setDCAselectionPtDep) {
675+ // if (std::fabs(track.dcaXY()) > maxDcaxy) return false;
676+ // if (std::fabs(track.dcaZ()) > maxDcaz) return false;
677+ // }
678+ // return true;
679+ // }
658680};
659681
660682WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
0 commit comments