Skip to content

Commit 12a8c5a

Browse files
committed
Task to read the ZDC table
1 parent a6a4b2e commit 12a8c5a

File tree

2 files changed

+157
-0
lines changed

2 files changed

+157
-0
lines changed

Common/Tasks/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,9 @@ o2physics_add_dpl_workflow(flow-test
9292
o2physics_add_dpl_workflow(muon-qa
9393
SOURCES qaMuon.cxx
9494
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2::Field O2::DetectorsBase O2::DetectorsCommonDataFormats O2::MathUtils O2::MCHTracking O2::DataFormatsMCH O2::GlobalTracking O2::MCHBase O2::MCHGeometryTransformer O2::CommonUtils
95+
COMPONENT_NAME Analysis)
96+
97+
o2physics_add_dpl_workflow(zdc-table-reader
98+
SOURCES zdcTableReader.cxx
99+
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore
95100
COMPONENT_NAME Analysis)

Common/Tasks/zdcTableReader.cxx

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2+
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3+
// All rights not expressly granted are reserved.
4+
//
5+
// This software is distributed under the terms of the GNU General Public
6+
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7+
//
8+
// In applying this license CERN does not waive the privileges and immunities
9+
// granted to it by virtue of its status as an Intergovernmental Organization
10+
// or submit itself to any jurisdiction.
11+
///
12+
/// \brief Read output table from ZDC light ion task
13+
/// \author chiara.oppedisano@cern.ch
14+
//
15+
16+
#include <Framework/AnalysisDataModel.h>
17+
#include <Framework/AnalysisTask.h>
18+
#include <Framework/HistogramRegistry.h>
19+
#include <Framework/runDataProcessing.h>
20+
#include "Common/DataModel/ZDCLightIons.h"
21+
22+
#include <TH1F.h>
23+
#include <TH2F.h>
24+
25+
using namespace o2;
26+
using namespace o2::framework;
27+
using namespace o2::framework::expressions;
28+
using namespace o2::aod;
29+
30+
//using MyEvents = soa::Join<aod::ZDCLightIons>;
31+
32+
struct ZDCLIAnalysis {
33+
34+
// Configurable number of bins
35+
Configurable<int> nBinsADC{"nBinsADC", 1000, "n bins 4 ZDC ADCs"};
36+
Configurable<int> nBinsAmp{"nBinsAmp", 1025, "n bins 4 ZDC amplitudes"};
37+
Configurable<int> nBinsTDC{"nBinsTDC", 480, "n bins 4 TDCs"};
38+
Configurable<int> nBinsFit{"nBinsFit", 1000, "n bins 4 FIT"};
39+
Configurable<float> MaxZN{"MaxZN", 4099.5, "Max 4 ZN histos"};
40+
Configurable<float> MaxZP{"MaxZP", 3099.5, "Max 4 ZP histos"};
41+
Configurable<float> MaxZEM{"MaxZEM", 3099.5, "Max 4 ZEM histos"};
42+
//
43+
Configurable<float> MaxMultFV0{"MaxMultFV0", 3000, "Max 4 FV0 histos"};
44+
Configurable<float> MaxMultFT0{"MaxMultFT0", 3000, "Max 4 FT0 histos"};
45+
//
46+
HistogramRegistry registry{"Histos", {}, OutputObjHandlingPolicy::AnalysisObject};
47+
48+
void init(InitContext const&)
49+
{
50+
registry.add("hZNApmc", "ZNApmc; ZNA amplitude; Entries", {HistType::kTH1F, {{nBinsAmp, -0.5, MaxZN}}});
51+
registry.add("hZPApmc", "ZPApmc; ZPA amplitude; Entries", {HistType::kTH1F, {{nBinsAmp, -0.5, MaxZP}}});
52+
registry.add("hZNCpmc", "ZNCpmc; ZNC amplitude; Entries", {HistType::kTH1F, {{nBinsAmp, -0.5, MaxZN}}});
53+
registry.add("hZPCpmc", "ZPCpmc; ZPC amplitude; Entries", {HistType::kTH1F, {{nBinsAmp, -0.5, MaxZP}}});
54+
registry.add("hZEM", "ZEM; ZEM1+ZEM2 amplitude; Entries", {HistType::kTH1F, {{nBinsAmp, -0.5, MaxZEM}}});
55+
registry.add("hZNAamplvsADC","ZNA amplitude vs. ADC; ZNA ADC; ZNA amplitude", {HistType::kTH2F, {{{nBinsAmp, -0.5, MaxZN}, {nBinsAmp, -0.5, MaxZN}}}});
56+
registry.add("hZNCamplvsADC","ZNC amplitude vs. ADC; ZNC ADC; ZNC amplitude", {HistType::kTH2F, {{{nBinsAmp, -0.5, MaxZN}, {nBinsAmp, -0.5, MaxZN}}}});
57+
registry.add("hZPAamplvsADC","ZPA amplitude vs. ADC; ZPA ADC; ZPA amplitude", {HistType::kTH2F, {{{nBinsAmp, -0.5, MaxZP}, {nBinsAmp, -0.5, MaxZP}}}});
58+
registry.add("hZPCamplvsADC","ZPC amplitude vs. ADC; ZPC ADC; ZPC amplitude", {HistType::kTH2F, {{{nBinsAmp, -0.5, MaxZP}, {nBinsAmp, -0.5, MaxZP}}}});
59+
registry.add("hZNvsZEM", "ZN vs ZEM; ZEM; ZNA+ZNC", {HistType::kTH2F, {{{nBinsAmp, -0.5, MaxZEM}, {nBinsAmp, -0.5, 2. * MaxZN}}}});
60+
registry.add("hZNAvsZNC", "ZNA vs ZNC; ZNC; ZNA", {HistType::kTH2F, {{{nBinsAmp, -0.5, MaxZN}, {nBinsAmp, -0.5, MaxZN}}}});
61+
registry.add("hZPAvsZPC", "ZPA vs ZPC; ZPC; ZPA", {HistType::kTH2F, {{{nBinsAmp, -0.5, MaxZP}, {nBinsAmp, -0.5, MaxZP}}}});
62+
registry.add("hZNAvsZPA", "ZNA vs ZPA; ZPA; ZNA", {HistType::kTH2F, {{{nBinsAmp, -0.5, MaxZP}, {nBinsAmp, -0.5, MaxZN}}}});
63+
registry.add("hZNCvsZPC", "ZNC vs ZPC; ZPC; ZNC", {HistType::kTH2F, {{{nBinsAmp, -0.5, MaxZP}, {nBinsAmp, -0.5, MaxZN}}}});
64+
//
65+
registry.add("hZNCcvsZNCsum", "ZNCcvsZNCsum; ZNCC ADC; ZNCsum", {HistType::kTH2F, {{{nBinsADC, -0.5, 3. * MaxZN}, {nBinsADC, -0.5, 3. * MaxZN}}}});
66+
registry.add("hZNAcvsZNAsum", "ZNAcvsZNAsum ZNAC ADC; ZNAsum", {HistType::kTH2F, {{{nBinsADC, -0.5, 3. * MaxZN}, {nBinsADC, -0.5, 3. * MaxZN}}}});
67+
//
68+
registry.add("hZNCvstdc", "ZNC vs tdc; ZNC amplitude; ZNC TDC", {HistType::kTH2F, {{{480, -13.5, 11.45}, {nBinsAmp, -0.5, MaxZN}}}});
69+
registry.add("hZNAvstdc", "ZNA vs tdc; ZNA amplitude; ZNA TDC", {HistType::kTH2F, {{{480, -13.5, 11.45}, {nBinsAmp, -0.5, MaxZN}}}});
70+
registry.add("hZPCvstdc", "ZPC vs tdc; ZPC amplitude; ZPC TDC", {HistType::kTH2F, {{{480, -13.5, 11.45}, {nBinsAmp, -0.5, MaxZP}}}});
71+
registry.add("hZPAvstdc", "ZPA vs tdc; ZPA amplitude; ZPA TDC", {HistType::kTH2F, {{{480, -13.5, 11.45}, {nBinsAmp, -0.5, MaxZP}}}});
72+
//
73+
registry.add("hZNvsV0A", "ZN vs V0A", {HistType::kTH2F, {{{nBinsFit, 0., MaxMultFV0}, {nBinsAmp, -0.5, 2. * MaxZN}}}});
74+
registry.add("hZNAvsFT0A", "ZNA vs FT0A", {HistType::kTH2F, {{{nBinsFit, 0., MaxMultFT0}, {nBinsAmp, -0.5, 2. * MaxZN}}}});
75+
registry.add("hZNCvsFT0C", "ZNC vs FT0C", {HistType::kTH2F, {{{nBinsFit, 0., MaxMultFT0}, {nBinsAmp, -0.5, 2. * MaxZN}}}});
76+
}
77+
78+
void process(aod::ZDCLightIons const& zdclightions)
79+
{
80+
for (auto& zdc : zdclightions) {
81+
auto tdczna = zdc.znaTdc();
82+
auto tdcznc = zdc.zncTdc();
83+
auto tdczpa = zdc.zpaTdc();
84+
auto tdczpc = zdc.zpcTdc();
85+
auto zna = zdc.znaAmpl();
86+
auto znaADC = zdc.znaPmc();
87+
auto znapm1 = zdc.znaPm1();
88+
auto znapm2 = zdc.znaPm2();
89+
auto znapm3 = zdc.znaPm3();
90+
auto znapm4 = zdc.znaPm4();
91+
auto znc = zdc.zncAmpl();
92+
auto zncADC = zdc.zncPmc();
93+
auto zncpm1 = zdc.zncPm1();
94+
auto zncpm2 = zdc.zncPm2();
95+
auto zncpm3 = zdc.zncPm3();
96+
auto zncpm4 = zdc.zncPm4();
97+
auto zpa = zdc.zpaAmpl();
98+
auto zpaADC = zdc.zpaPmc();
99+
auto zpc = zdc.zpcAmpl();
100+
auto zpcADC = zdc.zpcPmc();
101+
auto zem1 = zdc.zem1Ampl();
102+
auto zem2 = zdc.zem2Ampl();
103+
auto multFT0A = zdc.multFt0a();
104+
auto multFT0C = zdc.multFt0c();
105+
auto multV0A = zdc.multV0a();
106+
auto zvtx = zdc.vertexZ();
107+
auto centrFT0C = zdc.centralityFt0c();
108+
auto centrFT0A = zdc.centralityFt0a();
109+
auto centrFT0M = zdc.centralityFt0m();
110+
auto timestamp = zdc.timestamp();
111+
auto selectionBits = zdc.selectionBits();
112+
113+
registry.get<TH1>(HIST("hZNApmc"))->Fill(zna);
114+
registry.get<TH1>(HIST("hZNCpmc"))->Fill(znc);
115+
registry.get<TH1>(HIST("hZPApmc"))->Fill(zpa);
116+
registry.get<TH1>(HIST("hZPCpmc"))->Fill(zpc);
117+
registry.get<TH1>(HIST("hZEM"))->Fill(zem1+zem2);
118+
//
119+
registry.get<TH2>(HIST("hZNAamplvsADC"))->Fill(znaADC, zna);
120+
registry.get<TH2>(HIST("hZNCamplvsADC"))->Fill(zncADC, znc);
121+
registry.get<TH2>(HIST("hZPAamplvsADC"))->Fill(zpaADC, zpa);
122+
registry.get<TH2>(HIST("hZPCamplvsADC"))->Fill(zpcADC, zpc);
123+
//
124+
registry.get<TH2>(HIST("hZNvsZEM"))->Fill(zem1 + zem2, zna + znc);
125+
registry.get<TH2>(HIST("hZNAvsZNC"))->Fill(znc, zna);
126+
registry.get<TH2>(HIST("hZPAvsZPC"))->Fill(zpc, zpa);
127+
registry.get<TH2>(HIST("hZNAvsZPA"))->Fill(zpa, zna);
128+
registry.get<TH2>(HIST("hZNCvsZPC"))->Fill(zpc, znc);
129+
//
130+
registry.get<TH2>(HIST("hZNAvstdc"))->Fill(tdczna, zna);
131+
registry.get<TH2>(HIST("hZNCvstdc"))->Fill(tdcznc, znc);
132+
registry.get<TH2>(HIST("hZPAvstdc"))->Fill(tdczpa, zpa);
133+
registry.get<TH2>(HIST("hZPCvstdc"))->Fill(tdczpc, zpc);
134+
//
135+
registry.get<TH2>(HIST("hZNAcvsZNAsum"))->Fill(znapm1+znapm2+znapm3+znapm4, zna);
136+
registry.get<TH2>(HIST("hZNCcvsZNCsum"))->Fill(zncpm1+zncpm2+zncpm3+zncpm4, znc);
137+
//
138+
registry.get<TH2>(HIST("hZNvsV0A"))->Fill(multV0A / 100., zna + znc);
139+
registry.get<TH2>(HIST("hZNAvsFT0A"))->Fill((multFT0A) / 100., zna);
140+
registry.get<TH2>(HIST("hZNCvsFT0C"))->Fill((multFT0C) / 100., znc);
141+
}
142+
}
143+
144+
};
145+
146+
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
147+
{
148+
return WorkflowSpec{
149+
adaptAnalysisTask<ZDCLIAnalysis>(cfgc) //
150+
};
151+
}
152+

0 commit comments

Comments
 (0)