99// or submit itself to any jurisdiction.
1010
1111// O2 includes
12- #include " Framework/runDataProcessing.h"
1312#include " Framework/AnalysisTask.h"
1413#include " Framework/AnalysisDataModel.h"
1514#include " ReconstructionDataFormats/Track.h"
1615#include " PID/PIDResponse.h"
1716#include " Framework/ASoAHelpers.h"
17+ #include " Analysis/TrackSelectionTables.h"
1818
1919// ROOT includes
2020#include < TH1F.h>
2121
22+ using namespace o2 ;
23+ using namespace o2 ::framework;
24+ using namespace o2 ::framework::expressions;
25+
26+ void customize (std::vector<o2::framework::ConfigParamSpec>& workflowOptions)
27+ {
28+ std::vector<ConfigParamSpec> options{
29+ {" add-tof-histos" , VariantType::Int, 0 , {" Generate TPC with TOF histograms" }}};
30+ std::swap (workflowOptions, options);
31+ }
32+
33+ #include " Framework/runDataProcessing.h"
34+
35+ #define O2_DEFINE_CONFIGURABLE (NAME, TYPE, DEFAULT, HELP ) Configurable<TYPE> NAME{#NAME, DEFAULT, HELP};
36+
2237#define DOTH1F (OBJ, ...) \
2338 OutputObj<TH1F> OBJ{TH1F (#OBJ, __VA_ARGS__)};
2439#define DOTH2F (OBJ, ...) \
2540 OutputObj<TH2F> OBJ{TH2F (#OBJ, __VA_ARGS__)};
2641
27- #define TRACKSELECTION \
28- UChar_t clustermap = i.itsClusterMap(); \
29- bool issel = (i.tpcNClsFindable() > 70 ) && (i.flags() & 0x4 ) && (TESTBIT(clustermap, 0 ) || TESTBIT(clustermap, 1 )); \
30- if (!issel) \
31- continue ;
32-
33- // #define TRACKSELECTION 1;
34-
3542#define makelogaxis (h ) \
3643 { \
3744 const Int_t nbins = h->GetNbinsX (); \
4754 h->GetXaxis ()->Set (nbins, binp); \
4855 }
4956
50- using namespace o2 ;
51- using namespace o2 ::framework;
52- using namespace o2 ::framework::expressions;
53-
54- void customize (std::vector<o2::framework::ConfigParamSpec>& workflowOptions)
55- {
56- std::vector<ConfigParamSpec> options{
57- {" add-tof-histos" , VariantType::Bool, false , {" Generate TPC with TOF histograms" }}};
58- std::swap (workflowOptions, options);
59- }
60-
6157struct TPCPIDQAExpSignalTask {
58+ // Options
59+ O2_DEFINE_CONFIGURABLE (cfgCutVertex, float , 10 .0f , " Accepted z-vertex range" )
60+ O2_DEFINE_CONFIGURABLE (cfgCutEta, float , 0 .8f , " Eta range for tracks" )
61+
6262#define BIN_AXIS 1000 , 0.001 , 20 , 1000 , 0 , 1000
6363
6464 DOTH2F (htpcsignal, " ;#it{p} (GeV/#it{c});TPC Signal;Tracks" , BIN_AXIS);
@@ -89,13 +89,12 @@ struct TPCPIDQAExpSignalTask {
8989 makelogaxis (hexpAl);
9090 }
9191
92- void process (aod::Collision const & collision, soa::Join<aod::Tracks, aod::TracksExtra, aod::pidRespTPC> const & tracks)
92+ // Filters
93+ Filter collisionFilter = nabs(aod::collision::posZ) < cfgCutVertex;
94+ Filter trackFilter = (nabs(aod::track::eta) < cfgCutEta) && ((aod::track::isGlobalTrack == (uint8_t )1 ) || (aod::track::isGlobalTrackSDD == (uint8_t )1 ));
95+ void process (aod::Collision const & collision, soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra, aod::pidRespTPC, aod::TrackSelection>> const & tracks)
9396 {
9497 for (auto const & i : tracks) {
95- // Track selection
96- TRACKSELECTION;
97- //
98-
9998 // const float mom = i.p();
10099 const float mom = i.tpcInnerParam ();
101100 htpcsignal->Fill (mom, i.tpcSignal ());
@@ -113,6 +112,10 @@ struct TPCPIDQAExpSignalTask {
113112};
114113
115114struct TPCPIDQANSigmaTask {
115+ // Options
116+ O2_DEFINE_CONFIGURABLE (cfgCutVertex, float , 10 .0f , " Accepted z-vertex range" )
117+ O2_DEFINE_CONFIGURABLE (cfgCutEta, float , 0 .8f , " Eta range for tracks" )
118+
116119#define BIN_AXIS 1000 , 0.001 , 20 , 1000 , -10 , 10
117120
118121 // TPC NSigma
@@ -142,13 +145,13 @@ struct TPCPIDQANSigmaTask {
142145 makelogaxis (hnsigmaAl);
143146 }
144147
145- void process (aod::Collision const & collision, soa::Join<aod::Tracks, aod::TracksExtra, aod::pidRespTPC> const & tracks)
148+ // Filters
149+ Filter collisionFilter = nabs(aod::collision::posZ) < cfgCutVertex;
150+ Filter trackFilter = (nabs(aod::track::eta) < cfgCutEta) && ((aod::track::isGlobalTrack == (uint8_t )1 ) || (aod::track::isGlobalTrackSDD == (uint8_t )1 ));
151+
152+ void process (aod::Collision const & collision, soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra, aod::pidRespTPC, aod::TrackSelection>> const & tracks)
146153 {
147154 for (auto const & i : tracks) {
148- // Track selection
149- TRACKSELECTION;
150- //
151-
152155 hnsigmaEl->Fill (i.p (), i.tpcNSigmaEl ());
153156 hnsigmaMu->Fill (i.p (), i.tpcNSigmaMu ());
154157 hnsigmaPi->Fill (i.p (), i.tpcNSigmaPi ());
@@ -163,6 +166,10 @@ struct TPCPIDQANSigmaTask {
163166};
164167
165168struct TPCPIDQASignalwTOFTask {
169+ // Options
170+ O2_DEFINE_CONFIGURABLE (cfgCutVertex, float , 10 .0f , " Accepted z-vertex range" )
171+ O2_DEFINE_CONFIGURABLE (cfgCutEta, float , 0 .8f , " Eta range for tracks" )
172+
166173#define BIN_AXIS 1000 , 0.001 , 20 , 1000 , 0 , 1000
167174
168175 DOTH2F (htpcsignalEl, " ;#it{p} (GeV/#it{c});TPC Signal;Tracks" , BIN_AXIS);
@@ -191,11 +198,13 @@ struct TPCPIDQASignalwTOFTask {
191198 makelogaxis (htpcsignalAl);
192199 }
193200
194- void process (aod::Collision const & collision, soa::Join<aod::Tracks, aod::TracksExtra, aod::pidRespTPC, aod::pidRespTOF> const & tracks)
201+ // Filters
202+ Filter collisionFilter = nabs(aod::collision::posZ) < cfgCutVertex;
203+ Filter trackFilter = (nabs(aod::track::eta) < cfgCutEta) && ((aod::track::isGlobalTrack == (uint8_t )1 ) || (aod::track::isGlobalTrackSDD == (uint8_t )1 ));
204+
205+ void process (aod::Collision const & collision, soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra, aod::pidRespTPC, aod::pidRespTOF, aod::TrackSelection>> const & tracks)
195206 {
196207 for (auto const & i : tracks) {
197- // Track selection
198- TRACKSELECTION;
199208 // Require kTIME and kTOFout
200209 if (!(i.flags () & 0x2000 ))
201210 continue ;
@@ -255,9 +264,6 @@ struct TPCSpectraTask {
255264 void process (soa::Join<aod::Tracks, aod::TracksExtra, aod::pidRespTPC> const & tracks)
256265 {
257266 for (auto i : tracks) {
258- // Track selection
259- TRACKSELECTION;
260- //
261267 if (TMath::Abs (i.tpcNSigmaEl ()) < 3 ) {
262268 hp_El->Fill (i.p ());
263269 hpt_El->Fill (i.pt ());
@@ -280,7 +286,7 @@ struct TPCSpectraTask {
280286
281287WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
282288{
283- bool TPCwTOF = cfgc.options ().get <bool >(" add-tof-histos" );
289+ int TPCwTOF = cfgc.options ().get <int >(" add-tof-histos" );
284290 WorkflowSpec workflow{adaptAnalysisTask<TPCPIDQAExpSignalTask>(" TPCpidqa-expsignal-task" ),
285291 adaptAnalysisTask<TPCPIDQANSigmaTask>(" TPCpidqa-nsigma-task" ),
286292 adaptAnalysisTask<TPCSpectraTask>(" tpcspectra-task" )};
0 commit comments