@@ -64,6 +64,7 @@ struct DedxAnalysis {
6464 float invMassCutGamma = 0.0015 ;
6565 float magField = 1 ;
6666 float pTcut = 2.0 ;
67+ float nclCut = 120.0 ;
6768
6869 // Configurable Parameters
6970 // Tracks cuts
@@ -99,11 +100,15 @@ struct DedxAnalysis {
99100 " Minimum Mass Gamma" };
100101 Configurable<float > maxMassGamma{" maxMassGamma" , 0 .002022f ,
101102 " Maximum Mass Gamma" };
102- Configurable<bool > calibrationMode{" calibrationMode" , true , " calibration mode" };
103+ Configurable<bool > calibrationMode{" calibrationMode" , false , " calibration mode" };
103104 Configurable<bool > additionalCuts{" additionalCuts" , true , " additional cuts" };
104105 // Histograms names
105106 static constexpr std::string_view kDedxvsMomentumPos [kParticlesType ] = {" dEdx_vs_Momentum_all_Pos" , " dEdx_vs_Momentum_Pi_v0_Pos" , " dEdx_vs_Momentum_Pr_v0_Pos" , " dEdx_vs_Momentum_El_v0_Pos" };
106107 static constexpr std::string_view kDedxvsMomentumNeg [kParticlesType ] = {" dEdx_vs_Momentum_all_Neg" , " dEdx_vs_Momentum_Pi_v0_Neg" , " dEdx_vs_Momentum_Pr_v0_Neg" , " dEdx_vs_Momentum_El_v0_Neg" };
108+ static constexpr std::string_view kNclDedxMomentumNegBefore [kEtaIntervals ] = {" Ncl_vs_dEdx_vs_Momentum_Neg_1_Before" , " Ncl_vs_dEdx_vs_Momentum_Neg_2_Before" , " Ncl_vs_dEdx_vs_Momentum_Neg_3_Before" , " Ncl_vs_dEdx_vs_Momentum_Neg_4_Before" , " Ncl_vs_dEdx_vs_Momentum_Neg_5_Before" , " Ncl_vs_dEdx_vs_Momentum_Neg_6_Before" , " Ncl_vs_dEdx_vs_Momentum_Neg_7_Before" , " Ncl_vs_dEdx_vs_Momentum_Neg_8_Before" };
109+ static constexpr std::string_view kNclDedxMomentumPosBefore [kEtaIntervals ] = {" Ncl_vs_dEdx_vs_Momentum_Pos_1_Before" , " Ncl_vs_dEdx_vs_Momentum_Pos_2_Before" , " Ncl_vs_dEdx_vs_Momentum_Pos_3_Before" , " Ncl_vs_dEdx_vs_Momentum_Pos_4_Before" , " Ncl_vs_dEdx_vs_Momentum_Pos_5_Before" , " Ncl_vs_dEdx_vs_Momentum_Pos_6_Before" , " Ncl_vs_dEdx_vs_Momentum_Pos_7_Before" , " Ncl_vs_dEdx_vs_Momentum_Pos_8_Before" };
110+ static constexpr std::string_view kNclDedxMomentumNegAfter [kEtaIntervals ] = {" Ncl_vs_dEdx_vs_Momentum_Neg_1_After" , " Ncl_vs_dEdx_vs_Momentum_Neg_2_After" , " Ncl_vs_dEdx_vs_Momentum_Neg_3_After" , " Ncl_vs_dEdx_vs_Momentum_Neg_4_After" , " Ncl_vs_dEdx_vs_Momentum_Neg_5_After" , " Ncl_vs_dEdx_vs_Momentum_Neg_6_After" , " Ncl_vs_dEdx_vs_Momentum_Neg_7_After" , " Ncl_vs_dEdx_vs_Momentum_Neg_8_After" };
111+ static constexpr std::string_view kNclDedxMomentumPosAfter [kEtaIntervals ] = {" Ncl_vs_dEdx_vs_Momentum_Pos_1_After" , " Ncl_vs_dEdx_vs_Momentum_Pos_2_After" , " Ncl_vs_dEdx_vs_Momentum_Pos_3_After" , " Ncl_vs_dEdx_vs_Momentum_Pos_4_After" , " Ncl_vs_dEdx_vs_Momentum_Pos_5_After" , " Ncl_vs_dEdx_vs_Momentum_Pos_6_After" , " Ncl_vs_dEdx_vs_Momentum_Pos_7_After" , " Ncl_vs_dEdx_vs_Momentum_Pos_8_After" };
107112 static constexpr double EtaCut[kEtaIntervals + 1 ] = {-0.8 , -0.6 , -0.4 , -0.2 , 0.0 , 0.2 , 0.4 , 0.6 , 0.8 };
108113 Configurable<std::vector<float >> calibrationFactorNeg{" calibrationFactorNeg" , {50.4011 , 50.4764 , 50.186 , 49.2955 , 48.8222 , 49.4273 , 49.9292 , 50.0556 }, " negative calibration factors" };
109114 Configurable<std::vector<float >> calibrationFactorPos{" calibrationFactorPos" , {50.5157 , 50.6359 , 50.3198 , 49.3345 , 48.9197 , 49.4931 , 50.0188 , 50.1406 }, " positive calibration factors" };
@@ -223,6 +228,20 @@ struct DedxAnalysis {
223228 " hpt_vs_phi_Ncl_Before" , " phi cut" , HistType::kTH3F ,
224229 {{ptAxis}, {100 , 0.0 , 0.4 , " #varphi^{'}" }, {100 , 0 , 160 , " N_{cl}" }});
225230
231+ // Ncl vs de/dx
232+
233+ for (int i = 0 ; i < kEtaIntervals ; ++i) {
234+ registryDeDx.add (kNclDedxMomentumPosBefore [i].data (), " Ncl vs dE/dx vs Momentum Positive before" , HistType::kTH3F ,
235+ {{100 , 0 , 160 , " N_{cl}" }, {dedxAxis}, {pAxis}});
236+ registryDeDx.add (kNclDedxMomentumNegBefore [i].data (), " Ncl vs dE/dx vs Momentum Negative before" , HistType::kTH3F ,
237+ {{100 , 0 , 160 , " N_{cl}" }, {dedxAxis}, {pAxis}});
238+
239+ registryDeDx.add (kNclDedxMomentumPosAfter [i].data (), " Ncl vs dE/dx vs Momentum Positive after" , HistType::kTH3F ,
240+ {{100 , 0 , 160 , " N_{cl}" }, {dedxAxis}, {pAxis}});
241+ registryDeDx.add (kNclDedxMomentumNegAfter [i].data (), " Ncl vs dE/dx vs Momentum Negative after" , HistType::kTH3F ,
242+ {{100 , 0 , 160 , " N_{cl}" }, {dedxAxis}, {pAxis}});
243+ }
244+
226245 // beta plot
227246 registryDeDx.add (
228247 " hbeta_vs_p_Neg" , " beta" , HistType::kTH2F ,
@@ -405,7 +424,9 @@ struct DedxAnalysis {
405424 float pt = trk.pt ();
406425 float phi = trk.phi ();
407426 int charge = trk.sign ();
427+ float eta = trk.eta ();
408428 auto nTPCCl = trk.tpcNClsFindable () - trk.tpcNClsFindableMinusFound ();
429+ float sigP = trk.sign () * trk.tpcInnerParam ();
409430
410431 if (pt < pTcut)
411432 return true ;
@@ -421,10 +442,116 @@ struct DedxAnalysis {
421442
422443 registryDeDx.fill (HIST (" hpt_vs_phi_Ncl_Before" ), pt, phi, nTPCCl);
423444
445+ // cut phi
424446 if (phi < fphiCutHigh.Eval (pt) && phi > fphiCutLow.Eval (pt))
425447 return false ; // reject track
426448
449+ if (eta > EtaCut[0 ] && eta < EtaCut[1 ]) {
450+ if (sigP < 0 ) {
451+ registryDeDx.fill (HIST (kNclDedxMomentumNegBefore [0 ]), nTPCCl, trk.tpcSignal (), std::abs (sigP));
452+ } else {
453+ registryDeDx.fill (HIST (kNclDedxMomentumPosBefore [0 ]), nTPCCl, trk.tpcSignal (), sigP);
454+ }
455+ } else if (eta > EtaCut[1 ] && eta < EtaCut[2 ]) {
456+ if (sigP < 0 ) {
457+ registryDeDx.fill (HIST (kNclDedxMomentumNegBefore [1 ]), nTPCCl, trk.tpcSignal (), std::abs (sigP));
458+ } else {
459+ registryDeDx.fill (HIST (kNclDedxMomentumPosBefore [1 ]), nTPCCl, trk.tpcSignal (), sigP);
460+ }
461+ } else if (eta > EtaCut[2 ] && eta < EtaCut[3 ]) {
462+ if (sigP < 0 ) {
463+ registryDeDx.fill (HIST (kNclDedxMomentumNegBefore [2 ]), nTPCCl, trk.tpcSignal (), std::abs (sigP));
464+ } else {
465+ registryDeDx.fill (HIST (kNclDedxMomentumPosBefore [2 ]), nTPCCl, trk.tpcSignal (), sigP);
466+ }
467+ } else if (eta > EtaCut[3 ] && eta < EtaCut[4 ]) {
468+ if (sigP < 0 ) {
469+ registryDeDx.fill (HIST (kNclDedxMomentumNegBefore [3 ]), nTPCCl, trk.tpcSignal (), std::abs (sigP));
470+ } else {
471+ registryDeDx.fill (HIST (kNclDedxMomentumPosBefore [3 ]), nTPCCl, trk.tpcSignal (), sigP);
472+ }
473+ } else if (eta > EtaCut[4 ] && eta < EtaCut[5 ]) {
474+ if (sigP < 0 ) {
475+ registryDeDx.fill (HIST (kNclDedxMomentumNegBefore [4 ]), nTPCCl, trk.tpcSignal (), std::abs (sigP));
476+ } else {
477+ registryDeDx.fill (HIST (kNclDedxMomentumPosBefore [4 ]), nTPCCl, trk.tpcSignal (), sigP);
478+ }
479+ } else if (eta > EtaCut[5 ] && eta < EtaCut[6 ]) {
480+ if (sigP < 0 ) {
481+ registryDeDx.fill (HIST (kNclDedxMomentumNegBefore [5 ]), nTPCCl, trk.tpcSignal (), std::abs (sigP));
482+ } else {
483+ registryDeDx.fill (HIST (kNclDedxMomentumPosBefore [5 ]), nTPCCl, trk.tpcSignal (), sigP);
484+ }
485+ } else if (eta > EtaCut[6 ] && eta < EtaCut[7 ]) {
486+ if (sigP < 0 ) {
487+ registryDeDx.fill (HIST (kNclDedxMomentumNegBefore [6 ]), nTPCCl, trk.tpcSignal (), std::abs (sigP));
488+ } else {
489+ registryDeDx.fill (HIST (kNclDedxMomentumPosBefore [6 ]), nTPCCl, trk.tpcSignal (), sigP);
490+ }
491+ } else if (eta > EtaCut[7 ] && eta < EtaCut[8 ]) {
492+ if (sigP < 0 ) {
493+ registryDeDx.fill (HIST (kNclDedxMomentumNegBefore [7 ]), nTPCCl, trk.tpcSignal (), std::abs (sigP));
494+ } else {
495+ registryDeDx.fill (HIST (kNclDedxMomentumPosBefore [7 ]), nTPCCl, trk.tpcSignal (), sigP);
496+ }
497+ }
498+
499+ // cut Ncl
500+ if (nTPCCl < nclCut)
501+ return false ;
502+
427503 registryDeDx.fill (HIST (" hpt_vs_phi_Ncl_After" ), pt, phi, nTPCCl);
504+
505+ if (eta > EtaCut[0 ] && eta < EtaCut[1 ]) {
506+ if (sigP < 0 ) {
507+ registryDeDx.fill (HIST (kNclDedxMomentumNegAfter [0 ]), nTPCCl, trk.tpcSignal (), std::abs (sigP));
508+ } else {
509+ registryDeDx.fill (HIST (kNclDedxMomentumPosAfter [0 ]), nTPCCl, trk.tpcSignal (), sigP);
510+ }
511+ } else if (eta > EtaCut[1 ] && eta < EtaCut[2 ]) {
512+ if (sigP < 0 ) {
513+ registryDeDx.fill (HIST (kNclDedxMomentumNegAfter [1 ]), nTPCCl, trk.tpcSignal (), std::abs (sigP));
514+ } else {
515+ registryDeDx.fill (HIST (kNclDedxMomentumPosAfter [1 ]), nTPCCl, trk.tpcSignal (), sigP);
516+ }
517+ } else if (eta > EtaCut[2 ] && eta < EtaCut[3 ]) {
518+ if (sigP < 0 ) {
519+ registryDeDx.fill (HIST (kNclDedxMomentumNegAfter [2 ]), nTPCCl, trk.tpcSignal (), std::abs (sigP));
520+ } else {
521+ registryDeDx.fill (HIST (kNclDedxMomentumPosAfter [2 ]), nTPCCl, trk.tpcSignal (), sigP);
522+ }
523+ } else if (eta > EtaCut[3 ] && eta < EtaCut[4 ]) {
524+ if (sigP < 0 ) {
525+ registryDeDx.fill (HIST (kNclDedxMomentumNegAfter [3 ]), nTPCCl, trk.tpcSignal (), std::abs (sigP));
526+ } else {
527+ registryDeDx.fill (HIST (kNclDedxMomentumPosAfter [3 ]), nTPCCl, trk.tpcSignal (), sigP);
528+ }
529+ } else if (eta > EtaCut[4 ] && eta < EtaCut[5 ]) {
530+ if (sigP < 0 ) {
531+ registryDeDx.fill (HIST (kNclDedxMomentumNegAfter [4 ]), nTPCCl, trk.tpcSignal (), std::abs (sigP));
532+ } else {
533+ registryDeDx.fill (HIST (kNclDedxMomentumPosAfter [4 ]), nTPCCl, trk.tpcSignal (), sigP);
534+ }
535+ } else if (eta > EtaCut[5 ] && eta < EtaCut[6 ]) {
536+ if (sigP < 0 ) {
537+ registryDeDx.fill (HIST (kNclDedxMomentumNegAfter [5 ]), nTPCCl, trk.tpcSignal (), std::abs (sigP));
538+ } else {
539+ registryDeDx.fill (HIST (kNclDedxMomentumPosAfter [5 ]), nTPCCl, trk.tpcSignal (), sigP);
540+ }
541+ } else if (eta > EtaCut[6 ] && eta < EtaCut[7 ]) {
542+ if (sigP < 0 ) {
543+ registryDeDx.fill (HIST (kNclDedxMomentumNegAfter [6 ]), nTPCCl, trk.tpcSignal (), std::abs (sigP));
544+ } else {
545+ registryDeDx.fill (HIST (kNclDedxMomentumPosAfter [6 ]), nTPCCl, trk.tpcSignal (), sigP);
546+ }
547+ } else if (eta > EtaCut[7 ] && eta < EtaCut[8 ]) {
548+ if (sigP < 0 ) {
549+ registryDeDx.fill (HIST (kNclDedxMomentumNegAfter [7 ]), nTPCCl, trk.tpcSignal (), std::abs (sigP));
550+ } else {
551+ registryDeDx.fill (HIST (kNclDedxMomentumPosAfter [7 ]), nTPCCl, trk.tpcSignal (), sigP);
552+ }
553+ }
554+
428555 return true ;
429556 }
430557
0 commit comments