@@ -102,7 +102,7 @@ struct dielectronQC {
102102 Configurable<int > cfgOccupancyMax{" cfgOccupancyMax" , 1000000000 , " max. occupancy" };
103103 } eventcuts;
104104
105- DielectronCut fDielectonCut ;
105+ DielectronCut fDielectronCut ;
106106 struct : ConfigurableGroup {
107107 std::string prefix = " dielectroncut_group" ;
108108 Configurable<float > cfg_min_mass{" cfg_min_mass" , 0.0 , " min mass" };
@@ -175,6 +175,14 @@ struct dielectronQC {
175175
176176 void init (InitContext& /* context*/ )
177177 {
178+ mRunNumber = 0 ;
179+ d_bz = 0 ;
180+
181+ ccdb->setURL (ccdburl);
182+ ccdb->setCaching (true );
183+ ccdb->setLocalObjectValidityChecking ();
184+ ccdb->setFatalWhenNull (false );
185+
178186 zvtx_bin_edges = std::vector<float >(ConfVtxBins.value .begin (), ConfVtxBins.value .end ());
179187 zvtx_bin_edges.erase (zvtx_bin_edges.begin ());
180188
@@ -194,14 +202,6 @@ struct dielectronQC {
194202 DefineDileptonCut ();
195203 addhistograms ();
196204
197- mRunNumber = 0 ;
198- d_bz = 0 ;
199-
200- ccdb->setURL (ccdburl);
201- ccdb->setCaching (true );
202- ccdb->setLocalObjectValidityChecking ();
203- ccdb->setFatalWhenNull (false );
204-
205205 // fitter.setPropagateToPCA(true);
206206 // fitter.setMaxR(5.f);
207207 // fitter.setMinParamChange(1e-3);
@@ -359,38 +359,6 @@ struct dielectronQC {
359359 fRegistry .addClone (" Pair/same/" , " Pair/mix/" );
360360 }
361361
362- // for track info
363- fRegistry .add (" Track/hPt" , " pT;p_{T} (GeV/c)" , kTH1F , {{1000 , 0 .0f , 10 }}, false );
364- fRegistry .add (" Track/hQoverPt" , " q/pT;q/p_{T} (GeV/c)^{-1}" , kTH1F , {{400 , -20 , 20 }}, false );
365- fRegistry .add (" Track/hEtaPhi" , " #eta vs. #varphi;#varphi (rad.);#eta" , kTH2F , {{180 , 0 , 2 * M_PI}, {40 , -2 .0f , 2 .0f }}, false );
366- fRegistry .add (" Track/hDCAxyz" , " DCA xy vs. z;DCA_{xy} (cm);DCA_{z} (cm)" , kTH2F , {{200 , -1 .0f , 1 .0f }, {200 , -1 .0f , 1 .0f }}, false );
367- fRegistry .add (" Track/hDCAxyzSigma" , " DCA xy vs. z;DCA_{xy} (#sigma);DCA_{z} (#sigma)" , kTH2F , {{200 , -10 .0f , 10 .0f }, {200 , -10 .0f , 10 .0f }}, false );
368- fRegistry .add (" Track/hDCA3DSigma" , " DCA 3D;DCA_{3D} (#sigma);" , kTH1F , {{100 , 0 .0f , 10 .0f }}, false );
369- fRegistry .add (" Track/hDCAxyRes_Pt" , " DCA_{xy} resolution vs. pT;p_{T} (GeV/c);DCA_{xy} resolution (#mum)" , kTH2F , {{1000 , 0 , 10 }, {500 , 0 ., 500 }}, false );
370- fRegistry .add (" Track/hDCAzRes_Pt" , " DCA_{z} resolution vs. pT;p_{T} (GeV/c);DCA_{z} resolution (#mum)" , kTH2F , {{1000 , 0 , 10 }, {500 , 0 ., 500 }}, false );
371- fRegistry .add (" Track/hNclsTPC" , " number of TPC clusters" , kTH1F , {{161 , -0.5 , 160.5 }}, false );
372- fRegistry .add (" Track/hNcrTPC" , " number of TPC crossed rows" , kTH1F , {{161 , -0.5 , 160.5 }}, false );
373- fRegistry .add (" Track/hChi2TPC" , " chi2/number of TPC clusters" , kTH1F , {{100 , 0 , 10 }}, false );
374- fRegistry .add (" Track/hTPCdEdx" , " TPC dE/dx;p_{in} (GeV/c);TPC dE/dx (a.u.)" , kTH2F , {{1000 , 0 , 10 }, {200 , 0 , 200 }}, false );
375- fRegistry .add (" Track/hTPCNsigmaEl" , " TPC n sigma el;p_{in} (GeV/c);n #sigma_{e}^{TPC}" , kTH2F , {{1000 , 0 , 10 }, {100 , -5 , +5 }}, false );
376- fRegistry .add (" Track/hTPCNsigmaMu" , " TPC n sigma mu;p_{in} (GeV/c);n #sigma_{#mu}^{TPC}" , kTH2F , {{1000 , 0 , 10 }, {100 , -5 , +5 }}, false );
377- fRegistry .add (" Track/hTPCNsigmaPi" , " TPC n sigma pi;p_{in} (GeV/c);n #sigma_{#pi}^{TPC}" , kTH2F , {{1000 , 0 , 10 }, {100 , -5 , +5 }}, false );
378- fRegistry .add (" Track/hTPCNsigmaKa" , " TPC n sigma ka;p_{in} (GeV/c);n #sigma_{K}^{TPC}" , kTH2F , {{1000 , 0 , 10 }, {100 , -5 , +5 }}, false );
379- fRegistry .add (" Track/hTPCNsigmaPr" , " TPC n sigma pr;p_{in} (GeV/c);n #sigma_{p}^{TPC}" , kTH2F , {{1000 , 0 , 10 }, {100 , -5 , +5 }}, false );
380- fRegistry .add (" Track/hTOFbeta" , " TOF beta;p_{in} (GeV/c);#beta" , kTH2F , {{1000 , 0 , 10 }, {600 , 0 , 1.2 }}, false );
381- fRegistry .add (" Track/h1overTOFbeta" , " TOF beta;p_{in} (GeV/c);#beta" , kTH2F , {{1000 , 0 , 10 }, {1000 , 0.8 , 1.8 }}, false );
382- fRegistry .add (" Track/hTOFNsigmaEl" , " TOF n sigma el;p_{in} (GeV/c);n #sigma_{e}^{TOF}" , kTH2F , {{1000 , 0 , 10 }, {100 , -5 , +5 }}, false );
383- fRegistry .add (" Track/hTOFNsigmaMu" , " TOF n sigma mu;p_{in} (GeV/c);n #sigma_{#mu}^{TOF}" , kTH2F , {{1000 , 0 , 10 }, {100 , -5 , +5 }}, false );
384- fRegistry .add (" Track/hTOFNsigmaPi" , " TOF n sigma pi;p_{in} (GeV/c);n #sigma_{#pi}^{TOF}" , kTH2F , {{1000 , 0 , 10 }, {100 , -5 , +5 }}, false );
385- fRegistry .add (" Track/hTOFNsigmaKa" , " TOF n sigma ka;p_{in} (GeV/c);n #sigma_{K}^{TOF}" , kTH2F , {{1000 , 0 , 10 }, {100 , -5 , +5 }}, false );
386- fRegistry .add (" Track/hTOFNsigmaPr" , " TOF n sigma pr;p_{in} (GeV/c);n #sigma_{p}^{TOF}" , kTH2F , {{1000 , 0 , 10 }, {100 , -5 , +5 }}, false );
387- fRegistry .add (" Track/hTPCNcr2Nf" , " TPC Ncr/Nfindable" , kTH1F , {{200 , 0 , 2 }}, false );
388- fRegistry .add (" Track/hTPCNcls2Nf" , " TPC Ncls/Nfindable" , kTH1F , {{200 , 0 , 2 }}, false );
389- fRegistry .add (" Track/hNclsITS" , " number of ITS clusters" , kTH1F , {{8 , -0.5 , 7.5 }}, false );
390- fRegistry .add (" Track/hChi2ITS" , " chi2/number of ITS clusters" , kTH1F , {{100 , 0 , 10 }}, false );
391- fRegistry .add (" Track/hITSClusterMap" , " ITS cluster map" , kTH1F , {{128 , -0.5 , 127.5 }}, false );
392- fRegistry .add (" Track/hMeanClusterSizeITS" , " mean cluster size ITS;<cluster size> on ITS #times cos(#lambda)" , kTH1F , {{32 , 0 , 16 }}, false );
393-
394362 // event info
395363 if (nmod == 2 ) {
396364 o2::aod::pwgem::dilepton::utils::eventhistogram::addEventHistograms<2 >(&fRegistry );
@@ -422,38 +390,38 @@ struct dielectronQC {
422390 o2::ml::OnnxModel* eid_bdt = nullptr ;
423391 void DefineDileptonCut ()
424392 {
425- fDielectonCut = DielectronCut (" fDielectonCut " , " fDielectonCut " );
393+ fDielectronCut = DielectronCut (" fDielectronCut " , " fDielectronCut " );
426394
427395 // for pair
428- fDielectonCut .SetMeeRange (dielectroncuts.cfg_min_mass , dielectroncuts.cfg_max_mass );
429- fDielectonCut .SetMaxPhivPairMeeDep ([&](float mll) { return (mll - dielectroncuts.cfg_phiv_intercept ) / dielectroncuts.cfg_phiv_slope ; });
430- fDielectonCut .SetPairDCARange (dielectroncuts.cfg_min_pair_dca3d , dielectroncuts.cfg_max_pair_dca3d ); // in sigma
431- fDielectonCut .ApplyPhiV (dielectroncuts.cfg_apply_phiv );
432- fDielectonCut .ApplyPrefilter (dielectroncuts.cfg_apply_pf );
433- fDielectonCut .RequireITSibAny (dielectroncuts.cfg_require_itsib_any );
434- fDielectonCut .RequireITSib1st (dielectroncuts.cfg_require_itsib_1st );
396+ fDielectronCut .SetMeeRange (dielectroncuts.cfg_min_mass , dielectroncuts.cfg_max_mass );
397+ fDielectronCut .SetMaxPhivPairMeeDep ([&](float mll) { return (mll - dielectroncuts.cfg_phiv_intercept ) / dielectroncuts.cfg_phiv_slope ; });
398+ fDielectronCut .SetPairDCARange (dielectroncuts.cfg_min_pair_dca3d , dielectroncuts.cfg_max_pair_dca3d ); // in sigma
399+ fDielectronCut .ApplyPhiV (dielectroncuts.cfg_apply_phiv );
400+ fDielectronCut .ApplyPrefilter (dielectroncuts.cfg_apply_pf );
401+ fDielectronCut .RequireITSibAny (dielectroncuts.cfg_require_itsib_any );
402+ fDielectronCut .RequireITSib1st (dielectroncuts.cfg_require_itsib_1st );
435403
436404 // for track
437- fDielectonCut .SetTrackPtRange (dielectroncuts.cfg_min_pt_track , 1e+10f );
438- fDielectonCut .SetTrackEtaRange (-dielectroncuts.cfg_max_eta_track , +dielectroncuts.cfg_max_eta_track );
439- fDielectonCut .SetMinNClustersTPC (dielectroncuts.cfg_min_ncluster_tpc );
440- fDielectonCut .SetMinNCrossedRowsTPC (dielectroncuts.cfg_min_ncrossedrows );
441- fDielectonCut .SetMinNCrossedRowsOverFindableClustersTPC (0.8 );
442- fDielectonCut .SetChi2PerClusterTPC (0.0 , dielectroncuts.cfg_max_chi2tpc );
443- fDielectonCut .SetChi2PerClusterITS (0.0 , dielectroncuts.cfg_max_chi2its );
444- fDielectonCut .SetNClustersITS (dielectroncuts.cfg_min_ncluster_its , 7 );
445- fDielectonCut .SetMeanClusterSizeITSob (0 , 16 );
446- fDielectonCut .SetMaxDcaXY (dielectroncuts.cfg_max_dcaxy );
447- fDielectonCut .SetMaxDcaZ (dielectroncuts.cfg_max_dcaz );
405+ fDielectronCut .SetTrackPtRange (dielectroncuts.cfg_min_pt_track , 1e+10f );
406+ fDielectronCut .SetTrackEtaRange (-dielectroncuts.cfg_max_eta_track , +dielectroncuts.cfg_max_eta_track );
407+ fDielectronCut .SetMinNClustersTPC (dielectroncuts.cfg_min_ncluster_tpc );
408+ fDielectronCut .SetMinNCrossedRowsTPC (dielectroncuts.cfg_min_ncrossedrows );
409+ fDielectronCut .SetMinNCrossedRowsOverFindableClustersTPC (0.8 );
410+ fDielectronCut .SetChi2PerClusterTPC (0.0 , dielectroncuts.cfg_max_chi2tpc );
411+ fDielectronCut .SetChi2PerClusterITS (0.0 , dielectroncuts.cfg_max_chi2its );
412+ fDielectronCut .SetNClustersITS (dielectroncuts.cfg_min_ncluster_its , 7 );
413+ fDielectronCut .SetMeanClusterSizeITSob (0 , 16 );
414+ fDielectronCut .SetMaxDcaXY (dielectroncuts.cfg_max_dcaxy );
415+ fDielectronCut .SetMaxDcaZ (dielectroncuts.cfg_max_dcaz );
448416
449417 // for eID
450- fDielectonCut .SetPIDScheme (dielectroncuts.cfg_pid_scheme );
451- fDielectonCut .SetTPCNsigmaElRange (dielectroncuts.cfg_min_TPCNsigmaEl , dielectroncuts.cfg_max_TPCNsigmaEl );
452- fDielectonCut .SetTPCNsigmaMuRange (dielectroncuts.cfg_min_TPCNsigmaMu , dielectroncuts.cfg_max_TPCNsigmaMu );
453- fDielectonCut .SetTPCNsigmaPiRange (dielectroncuts.cfg_min_TPCNsigmaPi , dielectroncuts.cfg_max_TPCNsigmaPi );
454- fDielectonCut .SetTPCNsigmaKaRange (dielectroncuts.cfg_min_TPCNsigmaKa , dielectroncuts.cfg_max_TPCNsigmaKa );
455- fDielectonCut .SetTPCNsigmaPrRange (dielectroncuts.cfg_min_TPCNsigmaPr , dielectroncuts.cfg_max_TPCNsigmaPr );
456- fDielectonCut .SetTOFNsigmaElRange (dielectroncuts.cfg_min_TOFNsigmaEl , dielectroncuts.cfg_max_TOFNsigmaEl );
418+ fDielectronCut .SetPIDScheme (dielectroncuts.cfg_pid_scheme );
419+ fDielectronCut .SetTPCNsigmaElRange (dielectroncuts.cfg_min_TPCNsigmaEl , dielectroncuts.cfg_max_TPCNsigmaEl );
420+ fDielectronCut .SetTPCNsigmaMuRange (dielectroncuts.cfg_min_TPCNsigmaMu , dielectroncuts.cfg_max_TPCNsigmaMu );
421+ fDielectronCut .SetTPCNsigmaPiRange (dielectroncuts.cfg_min_TPCNsigmaPi , dielectroncuts.cfg_max_TPCNsigmaPi );
422+ fDielectronCut .SetTPCNsigmaKaRange (dielectroncuts.cfg_min_TPCNsigmaKa , dielectroncuts.cfg_max_TPCNsigmaKa );
423+ fDielectronCut .SetTPCNsigmaPrRange (dielectroncuts.cfg_min_TPCNsigmaPr , dielectroncuts.cfg_max_TPCNsigmaPr );
424+ fDielectronCut .SetTOFNsigmaElRange (dielectroncuts.cfg_min_TOFNsigmaEl , dielectroncuts.cfg_max_TOFNsigmaEl );
457425
458426 if (dielectroncuts.cfg_pid_scheme == static_cast <int >(DielectronCut::PIDSchemes::kPIDML )) { // please call this at the end of DefineDileptonCut
459427 eid_bdt = new o2::ml::OnnxModel ();
@@ -470,7 +438,7 @@ struct dielectronQC {
470438 eid_bdt->initModel (dielectroncuts.BDTLocalPathGamma .value , dielectroncuts.enableOptimizations .value );
471439 }
472440
473- fDielectonCut .SetPIDModel (eid_bdt);
441+ fDielectronCut .SetPIDModel (eid_bdt);
474442 } // end of PID ML
475443 }
476444
@@ -505,17 +473,17 @@ struct dielectronQC {
505473
506474 if constexpr (ev_id == 0 ) {
507475 if (dielectroncuts.cfg_pid_scheme == static_cast <int >(DielectronCut::PIDSchemes::kPIDML )) {
508- if (!fDielectonCut .IsSelectedTrack <true >(t1, collision) || !fDielectonCut .IsSelectedTrack <true >(t2, collision)) {
476+ if (!fDielectronCut .IsSelectedTrack <true >(t1, collision) || !fDielectronCut .IsSelectedTrack <true >(t2, collision)) {
509477 return false ;
510478 }
511479 } else { // cut-based
512- if (!fDielectonCut .IsSelectedTrack (t1) || !fDielectonCut .IsSelectedTrack (t2)) {
480+ if (!fDielectronCut .IsSelectedTrack (t1) || !fDielectronCut .IsSelectedTrack (t2)) {
513481 return false ;
514482 }
515483 }
516484 }
517485
518- if (!fDielectonCut .IsSelectedPair (t1, t2, d_bz)) {
486+ if (!fDielectronCut .IsSelectedPair (t1, t2, d_bz)) {
519487 return false ;
520488 }
521489
@@ -719,7 +687,6 @@ struct dielectronQC {
719687
720688 if (std::find (used_trackIds.begin (), used_trackIds.end (), pair_tmp_id1) == used_trackIds.end ()) {
721689 used_trackIds.emplace_back (pair_tmp_id1);
722- fillTrackInfo (t1);
723690 if (cfgDoMix) {
724691 if (t1.sign () > 0 ) {
725692 emh_pos->AddTrackToEventPool (key_df_collision, EMTrackWithCov (t1.globalIndex (), collision.globalIndex (), t1.trackId (), t1.pt (), t1.eta (), t1.phi (), o2::constants::physics::MassElectron, t1.sign (), t1.dcaXY (), t1.dcaZ (), possibleIds1,
@@ -734,7 +701,6 @@ struct dielectronQC {
734701 }
735702 if (std::find (used_trackIds.begin (), used_trackIds.end (), pair_tmp_id2) == used_trackIds.end ()) {
736703 used_trackIds.emplace_back (pair_tmp_id2);
737- fillTrackInfo (t2);
738704 if (cfgDoMix) {
739705 if (t2.sign () > 0 ) {
740706 emh_pos->AddTrackToEventPool (key_df_collision, EMTrackWithCov (t2.globalIndex (), collision.globalIndex (), t2.trackId (), t2.pt (), t2.eta (), t2.phi (), o2::constants::physics::MassElectron, t2.sign (), t2.dcaXY (), t2.dcaZ (), possibleIds1,
@@ -751,42 +717,6 @@ struct dielectronQC {
751717 return true ;
752718 }
753719
754- template <typename TTrack>
755- void fillTrackInfo (TTrack const & track)
756- {
757- float dca_3d = dca3DinSigma (track);
758- fRegistry .fill (HIST (" Track/hPt" ), track.pt ());
759- fRegistry .fill (HIST (" Track/hQoverPt" ), track.sign () / track.pt ());
760- fRegistry .fill (HIST (" Track/hEtaPhi" ), track.phi (), track.eta ());
761- fRegistry .fill (HIST (" Track/hDCAxyz" ), track.dcaXY (), track.dcaZ ());
762- fRegistry .fill (HIST (" Track/hDCAxyzSigma" ), track.dcaXY () / sqrt (track.cYY ()), track.dcaZ () / sqrt (track.cZZ ()));
763- fRegistry .fill (HIST (" Track/hDCA3DSigma" ), dca_3d);
764- fRegistry .fill (HIST (" Track/hDCAxyRes_Pt" ), track.pt (), sqrt (track.cYY ()) * 1e+4 ); // convert cm to um
765- fRegistry .fill (HIST (" Track/hDCAzRes_Pt" ), track.pt (), sqrt (track.cZZ ()) * 1e+4 ); // convert cm to um
766- fRegistry .fill (HIST (" Track/hNclsITS" ), track.itsNCls ());
767- fRegistry .fill (HIST (" Track/hNclsTPC" ), track.tpcNClsFound ());
768- fRegistry .fill (HIST (" Track/hNcrTPC" ), track.tpcNClsCrossedRows ());
769- fRegistry .fill (HIST (" Track/hTPCNcr2Nf" ), track.tpcCrossedRowsOverFindableCls ());
770- fRegistry .fill (HIST (" Track/hTPCNcls2Nf" ), track.tpcFoundOverFindableCls ());
771- fRegistry .fill (HIST (" Track/hChi2TPC" ), track.tpcChi2NCl ());
772- fRegistry .fill (HIST (" Track/hChi2ITS" ), track.itsChi2NCl ());
773- fRegistry .fill (HIST (" Track/hITSClusterMap" ), track.itsClusterMap ());
774- fRegistry .fill (HIST (" Track/hMeanClusterSizeITS" ), track.meanClusterSizeITS () * std::cos (std::atan (track.tgl ())));
775- fRegistry .fill (HIST (" Track/hTPCdEdx" ), track.tpcInnerParam (), track.tpcSignal ());
776- fRegistry .fill (HIST (" Track/hTPCNsigmaEl" ), track.tpcInnerParam (), track.tpcNSigmaEl ());
777- fRegistry .fill (HIST (" Track/hTPCNsigmaMu" ), track.tpcInnerParam (), track.tpcNSigmaMu ());
778- fRegistry .fill (HIST (" Track/hTPCNsigmaPi" ), track.tpcInnerParam (), track.tpcNSigmaPi ());
779- fRegistry .fill (HIST (" Track/hTPCNsigmaKa" ), track.tpcInnerParam (), track.tpcNSigmaKa ());
780- fRegistry .fill (HIST (" Track/hTPCNsigmaPr" ), track.tpcInnerParam (), track.tpcNSigmaPr ());
781- fRegistry .fill (HIST (" Track/hTOFbeta" ), track.tpcInnerParam (), track.beta ());
782- fRegistry .fill (HIST (" Track/h1overTOFbeta" ), track.tpcInnerParam (), 1 . / track.beta ());
783- fRegistry .fill (HIST (" Track/hTOFNsigmaEl" ), track.tpcInnerParam (), track.tofNSigmaEl ());
784- fRegistry .fill (HIST (" Track/hTOFNsigmaMu" ), track.tpcInnerParam (), track.tofNSigmaMu ());
785- fRegistry .fill (HIST (" Track/hTOFNsigmaPi" ), track.tpcInnerParam (), track.tofNSigmaPi ());
786- fRegistry .fill (HIST (" Track/hTOFNsigmaKa" ), track.tpcInnerParam (), track.tofNSigmaKa ());
787- fRegistry .fill (HIST (" Track/hTOFNsigmaPr" ), track.tpcInnerParam (), track.tofNSigmaPr ());
788- }
789-
790720 Filter collisionFilter_centrality = (cfgCentMin < o2::aod::cent::centFT0M && o2::aod::cent::centFT0M < cfgCentMax) || (cfgCentMin < o2::aod::cent::centFT0A && o2::aod::cent::centFT0A < cfgCentMax) || (cfgCentMin < o2::aod::cent::centFT0C && o2::aod::cent::centFT0C < cfgCentMax);
791721 using FilteredMyCollisions = soa::Filtered<MyCollisions>;
792722
0 commit comments