Skip to content

Commit 04c0930

Browse files
authored
Update track summary file reference in translator
1 parent aa6dd14 commit 04c0930

File tree

1 file changed

+78
-52
lines changed

1 file changed

+78
-52
lines changed

ALICE3/TableProducer/alice3TrackingTranslator.cxx

Lines changed: 78 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ struct Alice3TrackingTranslator {
8484
FileStruct(std::string filename, std::string treename) : mFile(filename.c_str(), "READ")
8585
{
8686
if (mFile.IsZombie()) {
87-
LOG(fatal) << "Could not open file " << filename;
87+
LOG(fatal) << "Could not open file '" << filename << "'";
8888
}
8989
mFile.GetObject(treename.c_str(), mTree);
9090
if (mTree) {
@@ -164,6 +164,7 @@ struct Alice3TrackingTranslator {
164164
SETADDRESS("t_phi", m_t_phi);
165165
SETADDRESS("t_pT", m_t_pT);
166166
SETADDRESS("t_eta", m_t_eta);
167+
SETADDRESS("majorityParticlePDG", m_majorityParticlePDG);
167168
}
168169
// Define track-related members here
169170
UInt_t* m_event_nr = nullptr;
@@ -195,6 +196,8 @@ struct Alice3TrackingTranslator {
195196
std::vector<float>* m_t_phi = nullptr; /// Initial momenta phi of majority particle
196197
std::vector<float>* m_t_pT = nullptr; /// Initial momenta pT of majority particle
197198
std::vector<float>* m_t_eta = nullptr; /// Initial momenta eta of majority particle
199+
200+
std::vector<int>* m_majorityParticlePDG = nullptr; // IA
198201
};
199202

200203
struct HitsStruct : public FileStruct {
@@ -211,19 +214,24 @@ struct Alice3TrackingTranslator {
211214
LOG(info) << "Alice3TrackingTranslator process called";
212215
// Find all ROOT files in the folder
213216
std::vector<std::string> rootFiles;
217+
LOG(info) << "Reading input files from path: " << inputPath.Data();
214218
TSystemDirectory dir(inputPath.Data(), inputPath.Data());
215219
TList* filesList = dir.GetListOfFiles();
216220
if (filesList) {
217221
TIter next(filesList);
218222
TSystemFile* file;
219223
while ((file = static_cast<TSystemFile*>(next()))) {
220224
TString fname = file->GetName();
225+
LOG(debug) << "Found file: " << fname.Data();
221226
if (!file->IsDirectory() && fname.EndsWith(".root")) {
222227
TString fullPath = TString::Format("%s/%s", inputPath.Data(), fname.Data());
228+
LOG(info) << "Adding file: " << fullPath.Data();
223229
rootFiles.push_back(fullPath.Data());
224230
}
225231
}
226232
delete filesList;
233+
} else {
234+
LOG(fatal) << "Could not open directory: " << inputPath.Data();
227235
}
228236
// Open all found ROOT files
229237
std::map<std::string, std::string> files;
@@ -239,7 +247,7 @@ struct Alice3TrackingTranslator {
239247
// Now open the files to translate and read the trees
240248
ParticleStruct fileParticles(files["particles_simulation.root"], "particles");
241249
// FileStruct fileVertices(files["performance_vertexing.root"], "vertexing");
242-
TrackStruct fileTracksummary(files["tracksummary_ckf.root"], "tracksummary");
250+
TrackStruct fileTracksummary(files["tracksummary_ambi.root"], "tracksummary");
243251
// HitsStruct fileHits(files["hits.root"], "hits");
244252

245253
const Long64_t kEvents = fileParticles.getEntries();
@@ -281,41 +289,18 @@ struct Alice3TrackingTranslator {
281289
// Fill MC particles
282290
int mothers[2] = {-1, -1};
283291
int daughters[2] = {-1, -1};
284-
const size_t nParticlesGen = fileParticles.m_vx->size();
285-
for (size_t iParticle = 0; iParticle < nParticlesGen; ++iParticle) {
286-
continue;
287-
if (iParticle == 0) {
288-
tableMcCollisions(0, // mccollision::BCId,
289-
0, // mccollision::GeneratorsID,
290-
fileParticles.m_vx->at(iParticle), // mccollision::PosX,
291-
fileParticles.m_vy->at(iParticle), // mccollision::PosY,
292-
fileParticles.m_vz->at(iParticle), // mccollision::PosZ
293-
fileParticles.m_vt->at(iParticle), // mccollision::T
294-
1.0f, // mccollision::Weight
295-
0.0f, // mccollision::ImpactParameter,
296-
0.f); // mccollision::EventPlaneAngle,
297-
}
298-
299-
uint8_t flags = 0;
300-
flags |= o2::aod::mcparticle::enums::PhysicalPrimary;
301-
tableStoredMcParticles(tableMcCollisions.lastIndex(), // mcCollisionId
302-
fileParticles.m_particle_type->at(iParticle), // pdgCode
303-
0, // statusCode
304-
flags, // flags
305-
mothers, // mothersIds
306-
daughters, // daughtersIdSlice
307-
1.0f, // weight
308-
fileParticles.m_px->at(iParticle), // m_px
309-
fileParticles.m_py->at(iParticle), // m_py
310-
fileParticles.m_pz->at(iParticle), // m_pz
311-
std::hypot(fileParticles.m_p->at(iParticle), fileParticles.m_m->at(iParticle)), // e
312-
fileParticles.m_vx->at(iParticle), // m_vx
313-
fileParticles.m_vy->at(iParticle), // m_vy
314-
fileParticles.m_vz->at(iParticle), // m_vz
315-
fileParticles.m_vt->at(iParticle)); // m_vt
316-
}
317292

293+
struct addedParticle {
294+
float px;
295+
float py;
296+
float pz;
297+
float vx;
298+
float vy;
299+
float vz;
300+
};
301+
std::map<int, std::vector<addedParticle>> addedParticles;
318302
// Convert tracks from ACTS to ALICE format
303+
const size_t nParticlesGen = fileParticles.m_vx->size();
319304
const size_t nParticles = fileTracksummary.m_t_vx->size();
320305
const size_t nTracks = fileTracksummary.m_eLOC0_fit->size();
321306
for (size_t iTrack = 0; iTrack < nTracks; ++iTrack) {
@@ -335,23 +320,27 @@ struct Alice3TrackingTranslator {
335320
uint8_t flags = 0;
336321
flags |= o2::aod::mcparticle::enums::PhysicalPrimary;
337322

338-
// fileTracksummary.m_majorityParticleId->at(iParticle).at(2), // pdgCode
339-
const size_t iParticleGen = fileTracksummary.m_majorityParticleId->at(iParticle).empty() ? 0 : fileTracksummary.m_majorityParticleId->at(iParticle).at(0);
340-
tableStoredMcParticles(tableMcCollisions.lastIndex(), // mcCollisionId
341-
fileParticles.m_particle_type->at(iParticleGen), // pdgCode
342-
0, // statusCode
343-
flags, // flags
344-
mothers, // mothersIds
345-
daughters, // daughtersIdSlice
346-
1.0f, // weight
347-
fileTracksummary.m_t_px->at(iParticle), // m_px
348-
fileTracksummary.m_t_py->at(iParticle), // m_py
349-
fileTracksummary.m_t_pz->at(iParticle), // m_pz
350-
0, // e
351-
fileTracksummary.m_t_vx->at(iParticle), // m_vx
352-
fileTracksummary.m_t_vy->at(iParticle), // m_vy
353-
fileTracksummary.m_t_vz->at(iParticle), // m_vz
354-
fileTracksummary.m_t_time->at(iParticle)); // m_vt
323+
addedParticles[fileTracksummary.m_majorityParticlePDG->at(iParticle)].push_back({fileTracksummary.m_t_px->at(iParticle),
324+
fileTracksummary.m_t_py->at(iParticle),
325+
fileTracksummary.m_t_pz->at(iParticle),
326+
fileTracksummary.m_t_vx->at(iParticle),
327+
fileTracksummary.m_t_vy->at(iParticle),
328+
fileTracksummary.m_t_vz->at(iParticle)});
329+
tableStoredMcParticles(tableMcCollisions.lastIndex(), // mcCollisionId
330+
fileTracksummary.m_majorityParticlePDG->at(iParticle), // pdgCode
331+
0, // statusCode
332+
flags, // flags
333+
mothers, // mothersIds
334+
daughters, // daughtersIdSlice
335+
1.0f, // weight
336+
fileTracksummary.m_t_px->at(iParticle), // m_px
337+
fileTracksummary.m_t_py->at(iParticle), // m_py
338+
fileTracksummary.m_t_pz->at(iParticle), // m_pz
339+
0, // e
340+
fileTracksummary.m_t_vx->at(iParticle), // m_vx
341+
fileTracksummary.m_t_vy->at(iParticle), // m_vy
342+
fileTracksummary.m_t_vz->at(iParticle), // m_vz
343+
fileTracksummary.m_t_time->at(iParticle)); // m_vt
355344

356345
// Extract ACTS track parameters
357346
const float phi = fileTracksummary.m_ePHI_fit->at(iTrack);
@@ -545,6 +534,43 @@ struct Alice3TrackingTranslator {
545534
false); // PassedITSHitsFB2
546535
}
547536

537+
for (size_t iParticle = 0; iParticle < nParticlesGen; ++iParticle) {
538+
539+
uint8_t flags = 0;
540+
flags |= o2::aod::mcparticle::enums::PhysicalPrimary;
541+
bool alreadyAdded = false;
542+
for (const auto& ap : addedParticles[fileParticles.m_particle_type->at(iParticle)]) {
543+
if (std::abs(ap.px - fileParticles.m_px->at(iParticle)) <= 1.e-5 &&
544+
std::abs(ap.py - fileParticles.m_py->at(iParticle)) <= 1.e-5 &&
545+
std::abs(ap.pz - fileParticles.m_pz->at(iParticle)) <= 1.e-5 &&
546+
std::abs(ap.vx - fileParticles.m_vx->at(iParticle)) <= 1.e-5 &&
547+
std::abs(ap.vy - fileParticles.m_vy->at(iParticle)) <= 1.e-5 &&
548+
std::abs(ap.vz - fileParticles.m_vz->at(iParticle)) <= 1.e-5) {
549+
alreadyAdded = true;
550+
break;
551+
}
552+
}
553+
if (alreadyAdded) {
554+
continue;
555+
}
556+
557+
tableStoredMcParticles(tableMcCollisions.lastIndex(), // mcCollisionId
558+
fileParticles.m_particle_type->at(iParticle), // pdgCode
559+
0, // statusCode
560+
flags, // flags
561+
mothers, // mothersIds
562+
daughters, // daughtersIdSlice
563+
1.0f, // weight
564+
fileParticles.m_px->at(iParticle), // m_px
565+
fileParticles.m_py->at(iParticle), // m_py
566+
fileParticles.m_pz->at(iParticle), // m_pz
567+
std::hypot(fileParticles.m_p->at(iParticle), fileParticles.m_m->at(iParticle)), // e
568+
fileParticles.m_vx->at(iParticle), // m_vx
569+
fileParticles.m_vy->at(iParticle), // m_vy
570+
fileParticles.m_vz->at(iParticle), // m_vz
571+
fileParticles.m_vt->at(iParticle)); // m_vt
572+
}
573+
548574
LOG(info) << "Event " << iEvent << ": has " << nTracks << " tracks and " << nParticles << " particles.";
549575
}
550576
}

0 commit comments

Comments
 (0)