2020#include " Framework/AnalysisDataModel.h"
2121#include " Common/DataModel/PIDResponse.h"
2222#include " Framework/Logger.h"
23+ #include " Common/DataModel/Multiplicity.h"
2324
2425namespace o2 ::aod
2526{
@@ -111,21 +112,26 @@ struct binning {
111112} // namespace nsigma
112113
113114DECLARE_SOA_INDEX_COLUMN (Collision, collision); // Index to the collision
114- DECLARE_SOA_COLUMN (Px, px, float ); // Momentum of the track
115- DECLARE_SOA_COLUMN (Py, py, float ); // Momentum of the track
116- DECLARE_SOA_COLUMN (Pz, pz, float ); // Momentum of the track
117- DECLARE_SOA_COLUMN (P, p, float ); // Momentum of the track
118- DECLARE_SOA_COLUMN (Pt, pt, float ); // Momentum of the track
119- // DECLARE_SOA_COLUMN(PosZ, posZ, float); // vertex position along z
115+ DECLARE_SOA_COLUMN (HasTOF, hasTOF, bool );
116+ DECLARE_SOA_COLUMN (HasITS, hasITS, bool );
117+ DECLARE_SOA_COLUMN (Px, px, float ); // Momentum of the track
118+ DECLARE_SOA_COLUMN (Py, py, float ); // Momentum of the track
119+ DECLARE_SOA_COLUMN (Pz, pz, float ); // Momentum of the track
120+ DECLARE_SOA_COLUMN (P, p, float ); // Momentum of the track
121+ DECLARE_SOA_COLUMN (Pt, pt, float ); // Momentum of the track
122+ DECLARE_SOA_COLUMN (TPCInnerParam, tpcInnerParam, float ); // vertex position along z
123+ DECLARE_SOA_COLUMN (TPCSignal, tpcSignal, float ); // vertex position along z
124+ DECLARE_SOA_COLUMN (Beta, beta, float );
120125DECLARE_SOA_COLUMN (DcaXY, dcaXY, float ); // impact parameter of the track
121126DECLARE_SOA_COLUMN (DcaZ, dcaZ, float ); // impact parameter of the track
122127DECLARE_SOA_COLUMN (TPCNClsFound, tpcNClsFound, float ); // Number of TPC clusters
123- DECLARE_SOA_COLUMN (TPCChi2NCl, tpcChi2NCl, float ); // TPC chi2
124- DECLARE_SOA_COLUMN (ITSNCls, itsNCls, float ); // Number of ITS clusters
125- DECLARE_SOA_COLUMN (ITSChi2NCl, itsChi2NCl, float ); // ITS chi2
128+ DECLARE_SOA_COLUMN (TPCCrossedRowsOverFindableCls, tpcCrossedRowsOverFindableCls, float );
129+ DECLARE_SOA_COLUMN (TPCChi2NCl, tpcChi2NCl, float ); // TPC chi2
130+ DECLARE_SOA_COLUMN (ITSNCls, itsNCls, float ); // Number of ITS clusters
131+ DECLARE_SOA_COLUMN (ITSChi2NCl, itsChi2NCl, float ); // ITS chi2
132+ DECLARE_SOA_COLUMN (Sign, sign, short );
126133DECLARE_SOA_COLUMN (Eta, eta, float );
127134DECLARE_SOA_COLUMN (Phi, phi, float );
128- DECLARE_SOA_COLUMN (Sign, sign, float );
129135DECLARE_SOA_COLUMN (StoredCrossedRows, storedCrossedRows, storedcrossedrows::binning::binned_t );
130136DECLARE_SOA_COLUMN (StoredTOFNSigmaPr, storedTofNSigmaPr, nsigma::binning::binned_t );
131137DECLARE_SOA_COLUMN (StoredTPCNSigmaPr, storedTpcNSigmaPr, nsigma::binning::binned_t );
@@ -143,30 +149,80 @@ DECLARE_SOA_DYNAMIC_COLUMN(TOFNSigmaDe, tofNSigmaDe,
143149DECLARE_SOA_DYNAMIC_COLUMN (TPCNSigmaDe, tpcNSigmaDe,
144150 [](nsigma::binning::binned_t nsigma_binned) -> float { return singletrackselector::unPack<nsigma::binning>(nsigma_binned); });
145151
152+ DECLARE_SOA_DYNAMIC_COLUMN (Energy, energy,
153+ [](float p, float mass) -> float { return sqrt (p * p + mass * mass); });
154+
155+ DECLARE_SOA_DYNAMIC_COLUMN (TrackCuts, trackCuts,
156+ [](float p, float eta, float dcaXY, float dcaZ,
157+ float tpcNClsFound, float tpcChi2NCl, float itsNCls, float tpcCrossedRowsOverFindableCls, storedcrossedrows::binning::binned_t storedCrossedRows,
158+ std::map<std::string, float >* track_cuts) -> bool {
159+ if (p < (*track_cuts)[" min_P" ] || p > (*track_cuts)[" max_P" ]) return false ;
160+ if (abs (eta) > (*track_cuts)[" eta" ]) return false ;
161+ if (tpcNClsFound < (*track_cuts)[" tpcNClsFound" ] || tpcChi2NCl > (*track_cuts)[" tpcChi2NCl" ]) return false ;
162+ if (abs (dcaXY) > (*track_cuts)[" dcaXY" ] || abs (dcaZ) > (*track_cuts)[" dcaZ" ]) return false ;
163+ if (itsNCls < (*track_cuts)[" itsNCls" ]) return false ;
164+ if (singletrackselector::unPackInt<storedcrossedrows::binning>(storedCrossedRows)<(*track_cuts)[" crossedrows" ]) return false ;
165+ if (tpcCrossedRowsOverFindableCls < (*track_cuts)[" crossedRows/findableCls" ]) return false ;
166+ // if(singletrackselector::unPack<storedcrossedrows::binning>(storedCrossedRows)> (*track_cuts)["crossedrows"]) return false;
167+
168+ return true ; });
169+
170+ DECLARE_SOA_DYNAMIC_COLUMN (PIDCuts, pidCuts,
171+ [](float pt, float sign, nsigma::binning::binned_t storedTpcNSigmaPr, nsigma::binning::binned_t storedTofNSigmaPr,
172+ nsigma::binning::binned_t storedTpcNSigmaDe, nsigma::binning::binned_t storedTofNSigmaDe,
173+ std::map<std::string, double >* PID_cuts) -> bool {
174+ if (sign != (*PID_cuts)[" sign" ]) return false ;
175+ if (pt < (*PID_cuts)[" PIDtrshld" ]){
176+ if ((*PID_cuts)[" particlePDG" ] == 2212 && abs (singletrackselector::unPack<nsigma::binning>(storedTpcNSigmaPr)) > (*PID_cuts)[" tpcNSigma" ]) return false ;
177+ if ((*PID_cuts)[" particlePDG" ] == 1000010020 && abs (singletrackselector::unPack<nsigma::binning>(storedTpcNSigmaDe)) > (*PID_cuts)[" tpcNSigma" ]) return false ;
178+ }
179+ else {
180+ if ((*PID_cuts)[" particlePDG" ] == 2212 && sqrt ((singletrackselector::unPack<nsigma::binning>(storedTpcNSigmaPr) * singletrackselector::unPack<nsigma::binning>(storedTpcNSigmaPr)) +
181+ (singletrackselector::unPack<nsigma::binning>(storedTofNSigmaPr)*singletrackselector::unPack<nsigma::binning>(storedTofNSigmaPr)))> (*PID_cuts)[" tpctofNSigma" ]) return false ;
182+ // if((*PID_cuts)["particlePDG"] == 2212 && (abs(singletrackselector::unPack<nsigma::binning>(storedTpcNSigmaPr)) > (*PID_cuts)["tpctofNSigma"]
183+ // || abs(singletrackselector::unPack<nsigma::binning>(storedTofNSigmaPr)) > (*PID_cuts)["tpctofNSigma"])) return false;
184+ // if((*PID_cuts)["particlePDG"] == 1000010020 && (abs(singletrackselector::unPack<nsigma::binning>(storedTpcNSigmaDe)) > (*PID_cuts)["tpctofNSigma"]
185+ // || abs(singletrackselector::unPack<nsigma::binning>(storedTofNSigmaDe)) > (*PID_cuts)["tpctofNSigma"])) return false;
186+ if ((*PID_cuts)[" particlePDG" ] == 1000010020 && sqrt ((singletrackselector::unPack<nsigma::binning>(storedTpcNSigmaDe) * singletrackselector::unPack<nsigma::binning>(storedTpcNSigmaDe)) +
187+ (singletrackselector::unPack<nsigma::binning>(storedTofNSigmaDe)*singletrackselector::unPack<nsigma::binning>(storedTofNSigmaDe))) > (*PID_cuts)[" tpctofNSigma" ]) return false ;
188+ }
189+
190+ return true ; });
191+
146192// DECLARE_SOA_DYNAMIC_COLUMN(TOFNSigmaPr, tofNSigmaPr,
147193// [](nsigma::binning::binned_t nsigma_binned) -> float { return nsigma::binning::bin_width * static_cast<float>(nsigma_binned); });
148194// DECLARE_SOA_DYNAMIC_COLUMN(TPCNSigmaPr, tpcNSigmaPr,
149195// [](nsigma::binning::binned_t nsigma_binned) -> float { return nsigma::binning::bin_width * static_cast<float>(nsigma_binned); });
150196
197+ DECLARE_SOA_COLUMN (GlobalIndex, globalIndex, int64_t ); // Index to the collision
198+ DECLARE_SOA_COLUMN (Mult, mult, int ); // Multiplicity of the collision
199+ DECLARE_SOA_COLUMN (PosZ, posZ, int ); // Vertex of the collision
200+
151201} // namespace singletrackselector
152202
153203DECLARE_SOA_TABLE (SingleTrackSel, " AOD" , " STSEL" , // Table of the variables for single track selection.
154204 o2::soa::Index<>,
155205 singletrackselector::CollisionId,
206+ singletrackselector::HasITS,
207+ singletrackselector::HasTOF,
156208 singletrackselector::Px,
157209 singletrackselector::Py,
158210 singletrackselector::Pz,
159211 singletrackselector::P,
160212 singletrackselector::Pt,
213+ singletrackselector::TPCInnerParam,
214+ singletrackselector::TPCSignal,
215+ singletrackselector::Beta,
161216 singletrackselector::DcaXY,
162217 singletrackselector::DcaZ,
163218 singletrackselector::TPCNClsFound,
219+ singletrackselector::TPCCrossedRowsOverFindableCls,
164220 singletrackselector::TPCChi2NCl,
165221 singletrackselector::ITSNCls,
166222 singletrackselector::ITSChi2NCl,
223+ singletrackselector::Sign,
167224 singletrackselector::Eta,
168225 singletrackselector::Phi,
169- singletrackselector::Sign,
170226 singletrackselector::StoredCrossedRows,
171227 singletrackselector::StoredTOFNSigmaPr,
172228 singletrackselector::StoredTPCNSigmaPr,
@@ -176,6 +232,23 @@ DECLARE_SOA_TABLE(SingleTrackSel, "AOD", "STSEL", // Table of the variables for
176232 singletrackselector::TOFNSigmaPr<singletrackselector::StoredTOFNSigmaPr>,
177233 singletrackselector::TPCNSigmaPr<singletrackselector::StoredTPCNSigmaPr>,
178234 singletrackselector::TOFNSigmaDe<singletrackselector::StoredTOFNSigmaDe>,
179- singletrackselector::TPCNSigmaDe<singletrackselector::StoredTPCNSigmaDe>);
235+ singletrackselector::TPCNSigmaDe<singletrackselector::StoredTPCNSigmaDe>,
236+ singletrackselector::Energy<singletrackselector::P>,
237+ singletrackselector::TrackCuts<singletrackselector::P, singletrackselector::Eta, singletrackselector::DcaXY,
238+ singletrackselector::DcaZ, singletrackselector::TPCNClsFound, singletrackselector::TPCChi2NCl,
239+ singletrackselector::ITSNCls,
240+ singletrackselector::TPCCrossedRowsOverFindableCls,
241+ singletrackselector::StoredCrossedRows>,
242+ singletrackselector::PIDCuts<singletrackselector::Pt, singletrackselector::Sign,
243+ singletrackselector::StoredTPCNSigmaPr,
244+ singletrackselector::StoredTOFNSigmaPr,
245+ singletrackselector::StoredTPCNSigmaDe,
246+ singletrackselector::StoredTOFNSigmaDe>);
247+
248+ DECLARE_SOA_TABLE (SingleCollSel, " AOD" , " SCSEL" , // Table of the variables for single track selection.
249+ // o2::soa::Index<>,
250+ singletrackselector::GlobalIndex,
251+ singletrackselector::Mult,
252+ singletrackselector::PosZ);
180253} // namespace o2::aod
181254#endif // PWGCF_DATAMODEL_SINGLETRACKSELECTOR_H_
0 commit comments