1- GeneratorLFStrangenessTriggered .C
1+ int External ()
2+ {
3+ std ::string path {"o2sim_Kine.root" };
4+ int numberOfInjectedSignalsPerEvent {1 };
5+ std ::vector < int > injectedPDGs = {
6+ 3334 ,
7+ -3334 ,
8+ 3312 ,
9+ -3312 };
10+
11+ auto nInjection = injectedPDGs .size ();
12+
13+ TFile file (path .c_str (), "READ ");
14+ if (file .IsZombie ()) {
15+ std ::cerr << "Cannot open ROOT file " << path << "\n" ;
16+ return 1 ;
17+ }
18+
19+ auto tree = (TTree * )file .Get ("o2sim" );
20+ if (!tree ) {
21+ std ::cerr << "Cannot find tree o2sim in file " << path << "\n" ;
22+ return 1 ;
23+ }
24+ std ::vector < o2 ::MCTrack > * tracks {};
25+ tree -> SetBranchAddress ("MCTrack" , & tracks );
26+
27+ std ::vector < int > nSignal ;
28+ for (int i = 0 ; i < nInjection ; i ++ ) {
29+ nSignal .push_back (0 );
30+ }
31+
32+ auto nEvents = tree -> GetEntries ();
33+ for (int i = 0 ; i < nEvents ; i ++ ) {
34+ auto check = tree -> GetEntry (i );
35+ for (int idxMCTrack = 0 ; idxMCTrack < tracks -> size (); ++ idxMCTrack ) {
36+ auto track = tracks -> at (idxMCTrack );
37+ auto pdg = track .GetPdgCode ();
38+ auto it = std ::find (injectedPDGs .begin (), injectedPDGs .end (), pdg );
39+ int index = std ::distance (injectedPDGs .begin (), it ); // index of injected PDG
40+ if (it != injectedPDGs .end ()) // found
41+ {
42+ // count signal PDG
43+ nSignal [index ]++ ;
44+ }
45+ }
46+ }
47+ std ::cout << "--------------------------------\n" ;
48+ std ::cout << "# Events: " << nEvents << "\n" ;
49+ for (int i = 0 ; i < nInjection ; i ++ ) {
50+ std ::cout << "# Injected nuclei \n" ;
51+ std ::cout << injectedPDGs [i ] << ": " << nSignal [i ] << "\n" ;
52+ if (nSignal [i ] == 0 ) {
53+ std ::cerr << "No generated: " << injectedPDGs [i ] << "\n" ;
54+ return 1 ; // At least one of the injected particles should be generated
55+ }
56+ }
57+ return 0 ;
58+ }
0 commit comments