Skip to content

Commit 131d552

Browse files
authored
Refactor ft0CorrectedTable by removing unused processes
Removed the processStandard and processWithBypassFT0timeInMC functions, along with related logging and histogram additions. Updated the function signature to process.
1 parent d3c2e47 commit 131d552

File tree

1 file changed

+6
-107
lines changed

1 file changed

+6
-107
lines changed

Common/TableProducer/ft0CorrectedTable.cxx

Lines changed: 6 additions & 107 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@
3434
#include <cstdint>
3535
#include <string>
3636

37+
#include <bitset>
38+
#include <string>
39+
3740
using namespace o2;
3841
using namespace o2::framework;
3942
using namespace o2::aod;
@@ -58,24 +61,13 @@ struct ft0CorrectedTable {
5861
HistogramRegistry histos{"Histos", {}, OutputObjHandlingPolicy::AnalysisObject};
5962
void init(o2::framework::InitContext&)
6063
{
61-
if (doprocessStandard && doprocessWithBypassFT0timeInMC) {
62-
LOG(fatal) << "Both processStandard and processWithBypassFT0timeInMC are enabled. Pick one of the two";
63-
}
64-
if (!doprocessStandard && !doprocessWithBypassFT0timeInMC) {
65-
LOG(fatal) << "No process is enabled. Pick one";
66-
}
6764
ccdb->setURL(cfgUrl);
6865
ccdb->setTimestamp(cfgTimestamp);
6966
ccdb->setCaching(true);
7067
ccdb->setLocalObjectValidityChecking();
7168
// Not later than now objects
7269
ccdb->setCreatedNotAfter(std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count());
7370

74-
if (doprocessWithBypassFT0timeInMC) {
75-
// From ps to ns
76-
resoFT0A.value = resoFT0A.value / 1000.f;
77-
resoFT0C.value = resoFT0C.value / 1000.f;
78-
}
7971
if (!addHistograms) {
8072
return;
8173
}
@@ -84,16 +76,11 @@ struct ft0CorrectedTable {
8476
histos.add("t0AC", "t0AC", kTH1D, {{1000, -1000, 1000, "t0AC (ns)"}});
8577
histos.add("deltat0AC", "deltat0AC", kTH1D, {{1000, -1, 1, "#Deltat0AC (ns)"}});
8678
histos.add("deltat0ACps", "deltat0ACps", kTH1D, {{1000, -1000, 1000, "#Deltat0AC (ps)"}});
87-
if (doprocessWithBypassFT0timeInMC) {
88-
histos.add("MC/deltat0A", "t0A", kTH1D, {{1000, -50, 50, "t0A (ps)"}});
89-
histos.add("MC/deltat0C", "t0C", kTH1D, {{1000, -50, 50, "t0C (ps)"}});
90-
histos.add("MC/deltat0AC", "t0AC", kTH1D, {{1000, -50, 50, "t0AC (ps)"}});
91-
}
9279
}
9380

94-
void processStandard(soa::Join<aod::Collisions, aod::EvSels> const& collisions,
95-
BCsWithMatchings const&,
96-
aod::FT0s const&)
81+
void process(soa::Join<aod::Collisions, aod::EvSels> const& collisions,
82+
BCsWithMatchings const&,
83+
aod::FT0s const&)
9784
{
9885
table.reserve(collisions.size());
9986
float t0A = 1e10f;
@@ -131,94 +118,6 @@ struct ft0CorrectedTable {
131118
table(t0A, t0C);
132119
}
133120
}
134-
PROCESS_SWITCH(ft0CorrectedTable, processStandard, "Process standard table (default)", true);
135-
136-
void processWithBypassFT0timeInMC(soa::Join<aod::Collisions, aod::EvSels, aod::McCollisionLabels> const& collisions,
137-
soa::Join<BCsWithMatchings, aod::Timestamps> const& bcs,
138-
aod::FT0s const&,
139-
aod::McCollisions const&)
140-
{
141-
if (cfgCollisionSystem.value == -1) {
142-
o2::parameters::GRPLHCIFData* grpo = ccdb->template getForTimeStamp<o2::parameters::GRPLHCIFData>(cfgPathGrpLhcIf,
143-
bcs.iteratorAt(0).timestamp());
144-
cfgCollisionSystem.value = CollisionSystemType::getCollisionTypeFromGrp(grpo);
145-
switch (cfgCollisionSystem.value) {
146-
case CollisionSystemType::kCollSyspp:
147-
resoFT0A.value = 24.f;
148-
resoFT0C.value = 24.f;
149-
break;
150-
case CollisionSystemType::kCollSysPbPb:
151-
resoFT0A.value = 5.65f;
152-
resoFT0C.value = 5.65f;
153-
break;
154-
default:
155-
break;
156-
}
157-
// Resolution is given in ps
158-
resoFT0A.value = resoFT0A.value / 1000.f;
159-
resoFT0C.value = resoFT0C.value / 1000.f;
160-
}
161-
table.reserve(collisions.size());
162-
float t0A = 1e10f;
163-
float t0C = 1e10f;
164-
float eventtimeMC = 1e10f;
165-
float posZMC = 0;
166-
bool hasMCcoll = false;
167-
168-
for (const auto& collision : collisions) {
169-
hasMCcoll = false;
170-
eventtimeMC = 1e10f;
171-
t0A = 1e10f;
172-
t0C = 1e10f;
173-
posZMC = 0;
174-
const float vertexPV = collision.posZ();
175-
const float vertex_corr = vertexPV * invLightSpeedCm2NS;
176-
constexpr float dummyTime = 30.; // Due to HW limitations time can be only within range (-25,25) ns, dummy time is around 32 ns
177-
if (collision.has_mcCollision()) {
178-
hasMCcoll = true;
179-
const auto& collisionMC = collision.mcCollision();
180-
eventtimeMC = collisionMC.t();
181-
posZMC = collisionMC.posZ();
182-
}
183-
if (collision.has_foundFT0()) {
184-
const auto& ft0 = collision.foundFT0();
185-
const std::bitset<8>& triggers = ft0.triggerMask();
186-
const bool ora = triggers[o2::ft0::Triggers::bitA];
187-
const bool orc = triggers[o2::ft0::Triggers::bitC];
188-
189-
if (ora && ft0.timeA() < dummyTime) {
190-
t0A = ft0.timeA();
191-
if (hasMCcoll) {
192-
const float diff = eventtimeMC - posZMC * invLightSpeedCm2NS + gRandom->Gaus(0.f, resoFT0A);
193-
t0A = diff;
194-
}
195-
t0A += vertex_corr;
196-
}
197-
if (orc && ft0.timeC() < dummyTime) {
198-
t0C = ft0.timeC();
199-
if (hasMCcoll) {
200-
const float diff = eventtimeMC + posZMC * invLightSpeedCm2NS + gRandom->Gaus(0.f, resoFT0C);
201-
t0C = diff;
202-
}
203-
t0C -= vertex_corr;
204-
}
205-
}
206-
LOGF(debug, " T0 collision time T0A = %f, T0C = %f", t0A, t0C);
207-
if (addHistograms) {
208-
histos.fill(HIST("t0A"), t0A);
209-
histos.fill(HIST("t0C"), t0C);
210-
histos.fill(HIST("t0AC"), (t0A + t0C) * 0.5f);
211-
histos.fill(HIST("deltat0AC"), t0A - t0C);
212-
if (hasMCcoll) {
213-
histos.fill(HIST("MC/deltat0A"), (t0A - eventtimeMC) * 1000.f);
214-
histos.fill(HIST("MC/deltat0C"), (t0C - eventtimeMC) * 1000.f);
215-
histos.fill(HIST("MC/deltat0AC"), ((t0A + t0C) * 0.5f - eventtimeMC) * 1000.f);
216-
}
217-
}
218-
table(t0A, t0C);
219-
}
220-
}
221-
PROCESS_SWITCH(ft0CorrectedTable, processWithBypassFT0timeInMC, "Process MC with bypass of the AO2D information. Use with care!", false);
222121
};
223122

224123
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) { return WorkflowSpec{adaptAnalysisTask<ft0CorrectedTable>(cfgc)}; }

0 commit comments

Comments
 (0)