@@ -185,7 +185,7 @@ struct LongrangecorrDerived {
185185 void fillCollQA (TCollision const & col)
186186 {
187187 histos.fill (HIST (" hMultiplicity" ), col.multiplicity ());
188- if constexpr (std::experimental::is_detected<HasCent, TCollision>::value ) {
188+ if constexpr (requires { col. centrality (); } ) {
189189 histos.fill (HIST (" hCentrality" ), col.centrality ());
190190 }
191191 histos.fill (HIST (" hVertexZ" ), col.posZ ());
@@ -197,15 +197,15 @@ struct LongrangecorrDerived {
197197 histos.fill (HIST (" Trig_etavsphi" ), track.phi (), track.eta ());
198198 histos.fill (HIST (" Trig_eta" ), track.eta ());
199199 histos.fill (HIST (" Trig_phi" ), track.phi ());
200- if constexpr (std::experimental::is_detected<HasFt0, TTrack>::value ) {
200+ if constexpr (requires { track. channelID (); } ) {
201201 histos.fill (HIST (" Trig_amp" ), track.amplitude ());
202202 histos.fill (HIST (" Channel_vs_Trig_amp" ), track.channelID (), track.amplitude ());
203203 histos.fill (HIST (" Trig_amp_gaincorrected" ), track.gainAmplitude ());
204204 histos.fill (HIST (" Channel_vs_Trig_amp_gaincorrected" ), track.channelID (), track.gainAmplitude ());
205205 } else {
206206 histos.fill (HIST (" Trig_pt" ), track.pt ());
207207 }
208- if constexpr (std::experimental::is_detected<HasInvMass, TTrack>::value ) {
208+ if constexpr (requires { track. invMass (); } ) {
209209 histos.fill (HIST (" Trig_invMass" ), track.invMass ());
210210 }
211211 }
@@ -216,7 +216,7 @@ struct LongrangecorrDerived {
216216 histos.fill (HIST (" Assoc_etavsphi" ), track.phi (), track.eta ());
217217 histos.fill (HIST (" Assoc_eta" ), track.eta ());
218218 histos.fill (HIST (" Assoc_phi" ), track.phi ());
219- if constexpr (std::experimental::is_detected<HasFt0, TTrack>::value ) {
219+ if constexpr (requires { track. channelID (); } ) {
220220 histos.fill (HIST (" Assoc_amp" ), track.amplitude ());
221221 histos.fill (HIST (" Channel_vs_Assoc_amp" ), track.channelID (), track.amplitude ());
222222 histos.fill (HIST (" Assoc_amp_gaincorrected" ), track.gainAmplitude ());
@@ -244,52 +244,39 @@ struct LongrangecorrDerived {
244244 return true ;
245245 }
246246
247- template <class T >
248- using HasTpcTrack = decltype (std::declval<T&>().trackType());
249- template <class T >
250- using HasV0Track = decltype (std::declval<T&>().v0Type());
251- template <class T >
252- using HasInvMass = decltype (std::declval<T&>().invMass());
253- template <class T >
254- using HasUpc = decltype (std::declval<T&>().gapSide());
255- template <class T >
256- using HasFt0 = decltype (std::declval<T&>().channelID());
257- template <class T >
258- using HasCent = decltype (std::declval<T&>().centrality());
259-
260247 template <CorrelationContainer::CFStep step, typename TTarget, typename TTriggers, typename TAssocs>
261248 void fillCorrHist (TTarget target, TTriggers const & triggers, TAssocs const & assocs, bool mixing, float vz, float multiplicity, float eventWeight)
262249 {
263250 for (auto const & triggerTrack : triggers) {
264251 auto trigAmpl = 1 .0f ;
265- if constexpr (std::experimental::is_detected<HasFt0, typename TTriggers::iterator>::value ) {
252+ if constexpr (requires { triggerTrack. channelID (); } ) {
266253 if (useGainCorr)
267254 trigAmpl = triggerTrack.gainAmplitude ();
268255 else
269256 trigAmpl = triggerTrack.amplitude ();
270257 } else {
271258 trigAmpl = 1.0 ;
272259 }
273- if constexpr (std::experimental::is_detected<HasTpcTrack, typename TTriggers::iterator>::value ) {
260+ if constexpr (requires { triggerTrack. trackType (); } ) {
274261 if (cfgPidMask != 0 && (cfgPidMask & (1u << static_cast <uint32_t >(triggerTrack.trackType ()))) == 0u )
275262 continue ;
276- } else if constexpr (std::experimental::is_detected<HasV0Track, typename TTriggers::iterator>::value ) {
263+ } else if constexpr (requires { triggerTrack. v0Type (); } ) {
277264 if (cfgV0Mask != 0 && (cfgV0Mask & (1u << static_cast <uint32_t >(triggerTrack.v0Type ()))) == 0u )
278265 continue ;
279266 }
280267 if (!mixing) {
281268 fillTrigTrackQA (triggerTrack);
282- if constexpr (std::experimental::is_detected<HasFt0, typename TTriggers::iterator>::value ) {
269+ if constexpr (requires { triggerTrack. channelID (); } ) {
283270 histos.fill (HIST (" Trig_hist" ), vz, multiplicity, 1.0 , 1.0 , eventWeight * trigAmpl);
284- } else if constexpr (std::experimental::is_detected<HasInvMass, typename TTriggers::iterator>::value ) {
271+ } else if constexpr (requires { triggerTrack. v0Type (); } ) {
285272 histos.fill (HIST (" Trig_hist" ), vz, multiplicity, triggerTrack.pt (), triggerTrack.invMass (), eventWeight * trigAmpl);
286273 } else {
287274 histos.fill (HIST (" Trig_hist" ), vz, multiplicity, triggerTrack.pt (), 1.0 , eventWeight * trigAmpl);
288275 }
289276 }
290277 for (auto const & assoTrack : assocs) {
291278 auto assoAmpl = 1 .0f ;
292- if constexpr (std::experimental::is_detected<HasFt0, typename TAssocs::iterator>::value ) {
279+ if constexpr (requires { assoTrack. v0Type (); } ) {
293280 if (useGainCorr)
294281 assoAmpl = assoTrack.gainAmplitude ();
295282 else
@@ -305,9 +292,9 @@ struct LongrangecorrDerived {
305292 } else {
306293 histos.fill (HIST (" deltaEta_deltaPhi_mixed" ), deltaPhi, deltaEta, eventWeight * trigAmpl * assoAmpl);
307294 }
308- if constexpr (std::experimental::is_detected<HasFt0, typename TTriggers::iterator>::value ) {
295+ if constexpr (requires { triggerTrack. channelID (); } ) {
309296 target->getPairHist ()->Fill (step, vz, multiplicity, 1.0 , 1.0 , deltaPhi, deltaEta, 1.0 , eventWeight * trigAmpl * assoAmpl);
310- } else if constexpr (std::experimental::is_detected<HasInvMass, typename TTriggers::iterator>::value ) {
297+ } else if constexpr (requires { triggerTrack. invMass (); } ) {
311298 target->getPairHist ()->Fill (step, vz, multiplicity, triggerTrack.pt (), triggerTrack.pt (), deltaPhi, deltaEta, triggerTrack.invMass (), eventWeight * trigAmpl * assoAmpl);
312299 } else {
313300 target->getPairHist ()->Fill (step, vz, multiplicity, triggerTrack.pt (), triggerTrack.pt (), deltaPhi, deltaEta, 1.0 , eventWeight * trigAmpl * assoAmpl);
@@ -324,7 +311,7 @@ struct LongrangecorrDerived {
324311 }
325312 fillCollQA (col);
326313 auto multiplicity = 1 .0f ;
327- if constexpr (std::experimental::is_detected<HasCent, TCollision>::value ) {
314+ if constexpr (requires { col. centrality (); } ) {
328315 if (isUseCentEst)
329316 multiplicity = col.centrality ();
330317 else
@@ -339,15 +326,15 @@ struct LongrangecorrDerived {
339326 void processMixed (TCollision const & cols, TrackTypes&&... tracks)
340327 {
341328 auto getMultiplicity = [this ](auto & col) {
342- if constexpr (std::experimental::is_detected<HasUpc, TCollision>::value ) {
329+ if constexpr (requires { col. gapSide (); } ) {
343330 if (!isUpcEventSelected<false >(col)) {
344331 return -1 .0f ;
345332 }
346333 } else {
347334 (void )this ;
348335 }
349336 auto multiplicity = 1 .0f ;
350- if constexpr (std::experimental::is_detected<HasCent, TCollision>::value ) {
337+ if constexpr (requires { col. centrality (); } ) {
351338 if (isUseCentEst)
352339 multiplicity = col.centrality ();
353340 else
@@ -365,7 +352,7 @@ struct LongrangecorrDerived {
365352 Pair<TCollision, TupleAtrack, TupleBtrack, MixedBinning> pairs{binningOnVtxAndMult, cfgNmixedevent, -1 , cols, tracksTuple, &cache};
366353 for (auto it = pairs.begin (); it != pairs.end (); it++) {
367354 auto & [col1, tracks1, col2, tracks2] = *it;
368- if constexpr (std::experimental::is_detected<HasUpc, TCollision>::value ) {
355+ if constexpr (requires { col1. gapSide (); } || requires { col2. gapSide (); } ) {
369356 if (!isUpcEventSelected<false >(col1) || !isUpcEventSelected<false >(col2)) {
370357 continue ;
371358 }
0 commit comments