@@ -101,6 +101,7 @@ struct FlowTask {
101101 Configurable<LabeledArray<double >> cfgPtPtGaps{" cfgPtPtGaps" , {LongArrayDouble[0 ], 4 , 2 , {" subevent 1" , " subevent 2" , " subevent 3" , " subevent 4" }, {" etamin" , " etamax" }}, " {etamin,etamax} for all ptpt-subevents" };
102102 O2_DEFINE_CONFIGURABLE (cfgEtaGapPtPtEnabled, bool , false , " switch of subevent pt-pt correlations" )
103103 Configurable<LabeledArray<float >> cfgTrackCuts{" cfgTrackCuts" , {TrackCutArray[0 ], 7 , 2 , {" chi2 per TPCcls" , " TPC cluster" , " TPC crossed rows" , " ITS cluster" , " DCAz" , " DCAxy Nsigma" , " DCAz Nsigma(override)" }, {" Nch" , " Observable" }}, " separate Nch and observable track selections" };
104+ std::array<std::array<float , 2 >, 7 > trackCuts{};
104105 enum TrackCut {
105106 // enum for labelledArray track selection
106107 kChi2prTPCcls = 0 , // max chi2 per TPC clusters
@@ -791,31 +792,44 @@ struct FlowTask {
791792 funcV4->SetParameters (0.008845 , 0.000259668 , -3.24435e-06 , 4.54837e-08 , -6.01825e-10 );
792793 }
793794
794- if (cfgTrackCuts->getData ()[kDCAxyNSigma ][kTrCutObs ]) {
795+ readMatrix (cfgTrackCuts->getData (), trackCuts);
796+ if (trackCuts[kDCAxyNSigma ][kTrCutObs ]) {
795797 cfgFuncParas.fPtDepDCAxy = new TF1 (" ptDepDCAxy" , Form (" [0]*%s" , cfgFuncParas.cfgDCAxyFunc ->c_str ()), 0.001 , 1000 );
796- cfgFuncParas.fPtDepDCAxy ->SetParameter (0 , cfgTrackCuts-> getData () [kDCAxyNSigma ][kTrCutObs ]);
797- LOGF (info, " DCAxy pt-dependence function: %s" , Form (" %0.1f * %s" , cfgTrackCuts-> getData () [kDCAxyNSigma ][kTrCutObs ], cfgFuncParas.cfgDCAxyFunc ->c_str ()));
798+ cfgFuncParas.fPtDepDCAxy ->SetParameter (0 , trackCuts [kDCAxyNSigma ][kTrCutObs ]);
799+ LOGF (info, " DCAxy pt-dependence function: %s" , Form (" %0.1f * %s" , trackCuts [kDCAxyNSigma ][kTrCutObs ], cfgFuncParas.cfgDCAxyFunc ->c_str ()));
798800 }
799- if (cfgTrackCuts-> getData () [kDCAxyNSigma ][kTrCutNch ]) {
801+ if (trackCuts [kDCAxyNSigma ][kTrCutNch ]) {
800802 cfgFuncParas.fPtDepDCAxyForNch = new TF1 (" ptDepDCAxyForNch" , Form (" [0]*%s" , cfgFuncParas.cfgDCAxyFunc ->c_str ()), 0.001 , 1000 );
801- cfgFuncParas.fPtDepDCAxyForNch ->SetParameter (0 , cfgTrackCuts-> getData () [kDCAxyNSigma ][kTrCutNch ]);
802- LOGF (info, " DCAxy pt-dependence function for Nch: %s" , Form (" %0.1f * %s" , cfgTrackCuts-> getData () [kDCAxyNSigma ][kTrCutNch ], cfgFuncParas.cfgDCAxyFunc ->c_str ()));
803+ cfgFuncParas.fPtDepDCAxyForNch ->SetParameter (0 , trackCuts [kDCAxyNSigma ][kTrCutNch ]);
804+ LOGF (info, " DCAxy pt-dependence function for Nch: %s" , Form (" %0.1f * %s" , trackCuts [kDCAxyNSigma ][kTrCutNch ], cfgFuncParas.cfgDCAxyFunc ->c_str ()));
803805 }
804- if (cfgTrackCuts-> getData () [kDCAzNSigma ][kTrCutObs ]) {
806+ if (trackCuts [kDCAzNSigma ][kTrCutObs ]) {
805807 cfgFuncParas.fPtDepDCAz = new TF1 (" ptDepDCAz" , Form (" [0]*%s" , cfgFuncParas.cfgDCAzFunc ->c_str ()), 0.001 , 1000 );
806- cfgFuncParas.fPtDepDCAz ->SetParameter (0 , cfgTrackCuts-> getData () [kDCAzNSigma ][kTrCutObs ]);
807- LOGF (info, " DCAz pt-dependence function: %s" , Form (" %0.1f * %s" , cfgTrackCuts-> getData () [kDCAzNSigma ][kTrCutObs ], cfgFuncParas.cfgDCAzFunc ->c_str ()));
808+ cfgFuncParas.fPtDepDCAz ->SetParameter (0 , trackCuts [kDCAzNSigma ][kTrCutObs ]);
809+ LOGF (info, " DCAz pt-dependence function: %s" , Form (" %0.1f * %s" , trackCuts [kDCAzNSigma ][kTrCutObs ], cfgFuncParas.cfgDCAzFunc ->c_str ()));
808810 }
809- if (cfgTrackCuts-> getData () [kDCAzNSigma ][kTrCutNch ]) {
811+ if (trackCuts [kDCAzNSigma ][kTrCutNch ]) {
810812 cfgFuncParas.fPtDepDCAzForNch = new TF1 (" ptDepDCAzForNch" , Form (" [0]*%s" , cfgFuncParas.cfgDCAzFunc ->c_str ()), 0.001 , 1000 );
811- cfgFuncParas.fPtDepDCAzForNch ->SetParameter (0 , cfgTrackCuts-> getData () [kDCAzNSigma ][kTrCutNch ]);
812- LOGF (info, " DCAz pt-dependence function for Nch: %s" , Form (" %0.1f * %s" , cfgTrackCuts-> getData () [kDCAzNSigma ][kTrCutNch ], cfgFuncParas.cfgDCAzFunc ->c_str ()));
813+ cfgFuncParas.fPtDepDCAzForNch ->SetParameter (0 , trackCuts [kDCAzNSigma ][kTrCutNch ]);
814+ LOGF (info, " DCAz pt-dependence function for Nch: %s" , Form (" %0.1f * %s" , trackCuts [kDCAzNSigma ][kTrCutNch ], cfgFuncParas.cfgDCAzFunc ->c_str ()));
813815 }
814816 if (!cfgEvSelRCTflags.value .empty ()) {
815817 rctChecker.init (cfgEvSelRCTflags.value .c_str ()); // override initialzation
816818 }
817819 }
818820
821+ template <typename T, typename P>
822+ void readMatrix (Array2D<T> const & mat, P& array)
823+ {
824+ for (auto i = 0 ; i < static_cast <int >(mat.rows ); ++i) {
825+ for (auto j = 0 ; j < static_cast <int >(mat.cols ); ++j) {
826+ array[i][j] = mat (i, j);
827+ }
828+ }
829+
830+ return ;
831+ }
832+
819833 void createOutputObjectsForRun (int runNumber)
820834 {
821835 const AxisSpec axisPhi{60 , 0.0 , constants::math::TwoPI, " #varphi" };
@@ -1154,21 +1168,21 @@ struct FlowTask {
11541168 template <typename TTrack>
11551169 bool trackSelected (const TTrack& track)
11561170 {
1157- if (cfgTrackCuts-> getData () [kDCAxyNSigma ][kTrCutObs ] && cfgFuncParas.fPtDepDCAxy != nullptr && (std::fabs (track.dcaXY ()) > cfgFuncParas.fPtDepDCAxy ->Eval (track.pt ())))
1171+ if (trackCuts [kDCAxyNSigma ][kTrCutObs ] && cfgFuncParas.fPtDepDCAxy != nullptr && (std::fabs (track.dcaXY ()) > cfgFuncParas.fPtDepDCAxy ->Eval (track.pt ())))
11581172 return false ;
1159- if (cfgTrackCuts-> getData () [kDCAzNSigma ][kTrCutObs ] && cfgFuncParas.fPtDepDCAz != nullptr && (std::fabs (track.dcaZ ()) > cfgFuncParas.fPtDepDCAz ->Eval (track.pt ())))
1173+ if (trackCuts [kDCAzNSigma ][kTrCutObs ] && cfgFuncParas.fPtDepDCAz != nullptr && (std::fabs (track.dcaZ ()) > cfgFuncParas.fPtDepDCAz ->Eval (track.pt ())))
11601174 return false ;
1161- return ((track.tpcNClsFound () >= cfgTrackCuts-> getData () [kTPCclu ][kTrCutObs ]) && (track.tpcNClsCrossedRows () >= cfgTrackCuts-> getData () [kTPCCrossedRows ][kTrCutObs ]) && (track.itsNCls () >= cfgTrackCuts-> getData () [kITSclu ][kTrCutObs ]) && (track.tpcChi2NCl () < cfgTrackCuts-> getData () [kChi2prTPCcls ][kTrCutObs ]) && (std::fabs (track.dcaZ ()) < cfgTrackCuts-> getData () [kDCAz ][kTrCutObs ]));
1175+ return ((track.tpcNClsFound () >= trackCuts [kTPCclu ][kTrCutObs ]) && (track.tpcNClsCrossedRows () >= trackCuts [kTPCCrossedRows ][kTrCutObs ]) && (track.itsNCls () >= trackCuts [kITSclu ][kTrCutObs ]) && (track.tpcChi2NCl () < trackCuts [kChi2prTPCcls ][kTrCutObs ]) && (std::fabs (track.dcaZ ()) < trackCuts [kDCAz ][kTrCutObs ]));
11621176 }
11631177
11641178 template <typename TTrack>
11651179 bool trackSelectedForNch (const TTrack& track)
11661180 {
1167- if (cfgTrackCuts-> getData () [kDCAxyNSigma ][kTrCutNch ] && cfgFuncParas.fPtDepDCAxyForNch != nullptr && (std::fabs (track.dcaXY ()) > cfgFuncParas.fPtDepDCAxyForNch ->Eval (track.pt ())))
1181+ if (trackCuts [kDCAxyNSigma ][kTrCutNch ] && cfgFuncParas.fPtDepDCAxyForNch != nullptr && (std::fabs (track.dcaXY ()) > cfgFuncParas.fPtDepDCAxyForNch ->Eval (track.pt ())))
11681182 return false ;
1169- if (cfgTrackCuts-> getData () [kDCAzNSigma ][kTrCutNch ] && cfgFuncParas.fPtDepDCAzForNch != nullptr && (std::fabs (track.dcaZ ()) > cfgFuncParas.fPtDepDCAzForNch ->Eval (track.pt ())))
1183+ if (trackCuts [kDCAzNSigma ][kTrCutNch ] && cfgFuncParas.fPtDepDCAzForNch != nullptr && (std::fabs (track.dcaZ ()) > cfgFuncParas.fPtDepDCAzForNch ->Eval (track.pt ())))
11701184 return false ;
1171- return ((track.tpcNClsFound () >= cfgTrackCuts-> getData () [kTPCclu ][kTrCutNch ]) && (track.tpcNClsCrossedRows () >= cfgTrackCuts-> getData () [kTPCCrossedRows ][kTrCutNch ]) && (track.itsNCls () >= cfgTrackCuts-> getData () [kITSclu ][kTrCutNch ]) && (track.tpcChi2NCl () < cfgTrackCuts-> getData () [kChi2prTPCcls ][kTrCutNch ]) && (std::fabs (track.dcaZ ()) < cfgTrackCuts-> getData () [kDCAz ][kTrCutNch ]));
1185+ return ((track.tpcNClsFound () >= trackCuts [kTPCclu ][kTrCutNch ]) && (track.tpcNClsCrossedRows () >= trackCuts [kTPCCrossedRows ][kTrCutNch ]) && (track.itsNCls () >= trackCuts [kITSclu ][kTrCutNch ]) && (track.tpcChi2NCl () < trackCuts [kChi2prTPCcls ][kTrCutNch ]) && (std::fabs (track.dcaZ ()) < trackCuts [kDCAz ][kTrCutNch ]));
11721186 }
11731187
11741188 template <typename TTrack>
0 commit comments