@@ -61,6 +61,9 @@ struct TreeWriterTpcV0 {
6161 Configurable<float > downsamplingTsalisPions{" downsamplingTsalisPions" , -1 ., " Downsampling factor to reduce the number of pions" };
6262 Configurable<float > downsamplingTsalisProtons{" downsamplingTsalisProtons" , -1 ., " Downsampling factor to reduce the number of protons" };
6363 Configurable<float > downsamplingTsalisElectrons{" downsamplingTsalisElectrons" , -1 ., " Downsampling factor to reduce the number of electrons" };
64+ Configurable<float > maxPt4dwnsmplTsalisPions{" maxPt4dwnsmplTsalisPions" , 100 ., " Maximum Pt for applying downsampling factor of pions" };
65+ Configurable<float > maxPt4dwnsmplTsalisProtons{" maxPt4dwnsmplTsalisProtons" , 100 ., " Maximum Pt for applying downsampling factor of protons" };
66+ Configurable<float > maxPt4dwnsmplTsalisElectrons{" maxPt4dwnsmplTsalisElectrons" , 100 ., " Maximum Pt for applying downsampling factor of electrons" };
6467
6568 Filter trackFilter = (trackSelection.node() == 0 ) ||
6669 ((trackSelection.node() == 1 ) && requireGlobalTrackInFilter()) ||
@@ -87,7 +90,7 @@ struct TreeWriterTpcV0 {
8790 const float v0radius = v0.v0radius ();
8891 const float gammapsipair = v0.psipair ();
8992
90- const double pseudoRndm = track.pt () * 1000 . - ( int64_t ) (track.pt () * 1000 );
93+ const double pseudoRndm = track.pt () * 1000 . - static_cast < int64_t > (track.pt () * 1000 );
9194 if (pseudoRndm < dwnSmplFactor) {
9295 rowTPCTree (track.tpcSignal (),
9396 1 . / dEdxExp,
@@ -129,11 +132,14 @@ struct TreeWriterTpcV0 {
129132 // / Random downsampling trigger function using Tsalis/Hagedorn spectra fit (sqrt(s) = 62.4 GeV to 13 TeV)
130133 // / as in https://iopscience.iop.org/article/10.1088/2399-6528/aab00f/pdf
131134 TRandom3* fRndm = new TRandom3(0 );
132- bool downsampleTsalisCharged (double pt, double factor1Pt, double sqrts, double mass)
135+ bool downsampleTsalisCharged (double pt, double factor1Pt, double sqrts, double mass, double maxPt )
133136 {
134137 if (factor1Pt < 0 .) {
135138 return true ;
136139 }
140+ if (pt > maxPt) {
141+ return true ;
142+ }
137143 const double prob = tsalisCharged (pt, mass, sqrts) * pt;
138144 const double probNorm = tsalisCharged (1 ., mass, sqrts);
139145 if ((fRndm ->Rndm () * ((prob / probNorm) * pt * pt)) > factor1Pt) {
@@ -181,37 +187,37 @@ struct TreeWriterTpcV0 {
181187 auto negTrack = v0.negTrack_as <soa::Filtered<Trks>>();
182188 // gamma
183189 if (static_cast <bool >(posTrack.pidbit () & (1 << 0 )) && static_cast <bool >(negTrack.pidbit () & (1 << 0 ))) {
184- if (downsampleTsalisCharged (posTrack.pt (), downsamplingTsalisElectrons, sqrtSNN, o2::track::pid_constants::sMasses [o2::track::PID::Electron])) {
190+ if (downsampleTsalisCharged (posTrack.pt (), downsamplingTsalisElectrons, sqrtSNN, o2::track::pid_constants::sMasses [o2::track::PID::Electron], maxPt4dwnsmplTsalisElectrons )) {
185191 fillSkimmedV0Table (v0, posTrack, collision, posTrack.tpcNSigmaEl (), posTrack.tofNSigmaEl (), posTrack.tpcExpSignalEl (posTrack.tpcSignal ()), o2::track::PID::Electron, runnumber, dwnSmplFactor_El);
186192 }
187- if (downsampleTsalisCharged (negTrack.pt (), downsamplingTsalisElectrons, sqrtSNN, o2::track::pid_constants::sMasses [o2::track::PID::Electron])) {
193+ if (downsampleTsalisCharged (negTrack.pt (), downsamplingTsalisElectrons, sqrtSNN, o2::track::pid_constants::sMasses [o2::track::PID::Electron], maxPt4dwnsmplTsalisElectrons )) {
188194 fillSkimmedV0Table (v0, negTrack, collision, negTrack.tpcNSigmaEl (), negTrack.tofNSigmaEl (), negTrack.tpcExpSignalEl (negTrack.tpcSignal ()), o2::track::PID::Electron, runnumber, dwnSmplFactor_El);
189195 }
190196 }
191197 // Ks0
192198 if (static_cast <bool >(posTrack.pidbit () & (1 << 1 )) && static_cast <bool >(negTrack.pidbit () & (1 << 1 ))) {
193- if (downsampleTsalisCharged (posTrack.pt (), downsamplingTsalisPions, sqrtSNN, o2::track::pid_constants::sMasses [o2::track::PID::Pion])) {
199+ if (downsampleTsalisCharged (posTrack.pt (), downsamplingTsalisPions, sqrtSNN, o2::track::pid_constants::sMasses [o2::track::PID::Pion], maxPt4dwnsmplTsalisPions )) {
194200 fillSkimmedV0Table (v0, posTrack, collision, posTrack.tpcNSigmaPi (), posTrack.tofNSigmaPi (), posTrack.tpcExpSignalPi (posTrack.tpcSignal ()), o2::track::PID::Pion, runnumber, dwnSmplFactor_Pi);
195201 }
196- if (downsampleTsalisCharged (negTrack.pt (), downsamplingTsalisPions, sqrtSNN, o2::track::pid_constants::sMasses [o2::track::PID::Pion])) {
202+ if (downsampleTsalisCharged (negTrack.pt (), downsamplingTsalisPions, sqrtSNN, o2::track::pid_constants::sMasses [o2::track::PID::Pion], maxPt4dwnsmplTsalisPions )) {
197203 fillSkimmedV0Table (v0, negTrack, collision, negTrack.tpcNSigmaPi (), negTrack.tofNSigmaPi (), negTrack.tpcExpSignalPi (negTrack.tpcSignal ()), o2::track::PID::Pion, runnumber, dwnSmplFactor_Pi);
198204 }
199205 }
200206 // Lambda
201207 if (static_cast <bool >(posTrack.pidbit () & (1 << 2 )) && static_cast <bool >(negTrack.pidbit () & (1 << 2 ))) {
202- if (downsampleTsalisCharged (posTrack.pt (), downsamplingTsalisProtons, sqrtSNN, o2::track::pid_constants::sMasses [o2::track::PID::Proton])) {
208+ if (downsampleTsalisCharged (posTrack.pt (), downsamplingTsalisProtons, sqrtSNN, o2::track::pid_constants::sMasses [o2::track::PID::Proton], maxPt4dwnsmplTsalisProtons )) {
203209 fillSkimmedV0Table (v0, posTrack, collision, posTrack.tpcNSigmaPr (), posTrack.tofNSigmaPr (), posTrack.tpcExpSignalPr (posTrack.tpcSignal ()), o2::track::PID::Proton, runnumber, dwnSmplFactor_Pr);
204210 }
205- if (downsampleTsalisCharged (negTrack.pt (), downsamplingTsalisPions, sqrtSNN, o2::track::pid_constants::sMasses [o2::track::PID::Pion])) {
211+ if (downsampleTsalisCharged (negTrack.pt (), downsamplingTsalisPions, sqrtSNN, o2::track::pid_constants::sMasses [o2::track::PID::Pion], maxPt4dwnsmplTsalisPions )) {
206212 fillSkimmedV0Table (v0, negTrack, collision, negTrack.tpcNSigmaPi (), negTrack.tofNSigmaPi (), negTrack.tpcExpSignalPi (negTrack.tpcSignal ()), o2::track::PID::Pion, runnumber, dwnSmplFactor_Pi);
207213 }
208214 }
209215 // Antilambda
210216 if (static_cast <bool >(posTrack.pidbit () & (1 << 3 )) && static_cast <bool >(negTrack.pidbit () & (1 << 3 ))) {
211- if (downsampleTsalisCharged (posTrack.pt (), downsamplingTsalisPions, sqrtSNN, o2::track::pid_constants::sMasses [o2::track::PID::Pion])) {
217+ if (downsampleTsalisCharged (posTrack.pt (), downsamplingTsalisPions, sqrtSNN, o2::track::pid_constants::sMasses [o2::track::PID::Pion], maxPt4dwnsmplTsalisPions )) {
212218 fillSkimmedV0Table (v0, posTrack, collision, posTrack.tpcNSigmaPi (), posTrack.tofNSigmaPi (), posTrack.tpcExpSignalPi (posTrack.tpcSignal ()), o2::track::PID::Pion, runnumber, dwnSmplFactor_Pi);
213219 }
214- if (downsampleTsalisCharged (negTrack.pt (), downsamplingTsalisProtons, sqrtSNN, o2::track::pid_constants::sMasses [o2::track::PID::Proton])) {
220+ if (downsampleTsalisCharged (negTrack.pt (), downsamplingTsalisProtons, sqrtSNN, o2::track::pid_constants::sMasses [o2::track::PID::Proton], maxPt4dwnsmplTsalisProtons )) {
215221 fillSkimmedV0Table (v0, negTrack, collision, negTrack.tpcNSigmaPr (), negTrack.tofNSigmaPr (), negTrack.tpcExpSignalPr (negTrack.tpcSignal ()), o2::track::PID::Proton, runnumber, dwnSmplFactor_Pr);
216222 }
217223 }
@@ -319,7 +325,7 @@ struct TreeWriterTPCTOF {
319325 const double bg = p / mass;
320326 const int multTPC = collision.multTPC ();
321327
322- const double pseudoRndm = track.pt () * 1000 . - ( int64_t ) (track.pt () * 1000 );
328+ const double pseudoRndm = track.pt () * 1000 . - static_cast < int64_t > (track.pt () * 1000 );
323329 if (pseudoRndm < dwnSmplFactor) {
324330 rowTPCTOFTree (track.tpcSignal (),
325331 1 . / dEdxExp,
0 commit comments