Skip to content

Commit c895473

Browse files
authored
Merge branch 'AliceO2Group:master' into master
2 parents 88c6099 + 38e881f commit c895473

File tree

15 files changed

+683
-1065
lines changed

15 files changed

+683
-1065
lines changed

CODEOWNERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
/PWGCF/DataModel @alibuild @jgrosseo @saganatt @victor-gonzalez @zchochul @lgraczykCern @prchakra @lauraser @ariedel-cern @EmilGorm @otonvd @shouqiye @glromane
3535
/PWGCF/TableProducer @alibuild @jgrosseo @saganatt @victor-gonzalez @zchochul @lgraczykCern @prchakra @lauraser @ariedel-cern @EmilGorm @otonvd @shouqiye @glromane
3636
/PWGCF/Tasks @alibuild @jgrosseo @saganatt @victor-gonzalez @zchochul @lgraczykCern @prchakra @lauraser @ariedel-cern @EmilGorm @otonvd @shouqiye @glromane
37-
/PWGDQ @alibuild @iarsene @mcoquet @dsekihat @feisenhu @lucamicheletti93
37+
/PWGDQ @alibuild @iarsene @mcoquet642 @lucamicheletti93
3838
/PWGEM @alibuild @feisenhu @dsekihat @ivorobye
3939
/PWGEM/Dilepton @alibuild @mikesas @rbailhac @dsekihat @ivorobye @feisenhu
4040
/PWGEM/PhotonMeson @alibuild @mikesas @rbailhac @m-c-danisch @novitzky @mhemmer-cern @dsekihat

Common/DataModel/FwdTrackReAlignTables.h

Lines changed: 37 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -22,129 +22,51 @@ namespace o2::aod
2222
{
2323
namespace fwdtrackrealign
2424
{
25-
// FwdTracksRealign Columns definitions
26-
DECLARE_SOA_INDEX_COLUMN(Collision, collision); //!
27-
DECLARE_SOA_INDEX_COLUMN(FwdTrack, fwdtrack); //! FwdTrack index
28-
DECLARE_SOA_COLUMN(TrackType, trackType, uint8_t); //! Type of track. See enum ForwardTrackTypeEnum
29-
DECLARE_SOA_COLUMN(X, x, float); //! TrackParFwd parameter x
30-
DECLARE_SOA_COLUMN(Y, y, float); //! TrackParFwd parameter y
31-
DECLARE_SOA_COLUMN(Z, z, float); //! TrackParFwd propagation parameter z
32-
DECLARE_SOA_COLUMN(Phi, phi, float); //! TrackParFwd parameter phi; (i.e. pt pointing direction)
33-
DECLARE_SOA_COLUMN(Tgl, tgl, float); //! TrackParFwd parameter tan(\lamba); (\lambda = 90 - \theta_{polar})
34-
DECLARE_SOA_COLUMN(Signed1Pt, signed1Pt, float); //! TrackParFwd parameter: charged inverse transverse momentum; (q/pt)
35-
DECLARE_SOA_COLUMN(IsRemovable, isRemovable, int); //! flag to validate the re-aligned track
36-
DECLARE_SOA_COLUMN(Chi2, chi2, float); //! Track chi^2
25+
DECLARE_SOA_COLUMN(IsRemovable, isRemovable, int); //! flag to check the refit status
26+
}
3727

38-
// FwdTracksCovRealign columns definitions
39-
DECLARE_SOA_COLUMN(SigmaX, sigmaX, float); //! Covariance matrix
40-
DECLARE_SOA_COLUMN(SigmaY, sigmaY, float); //! Covariance matrix
41-
DECLARE_SOA_COLUMN(SigmaPhi, sigmaPhi, float); //! Covariance matrix
42-
DECLARE_SOA_COLUMN(SigmaTgl, sigmaTgl, float); //! Covariance matrix
43-
DECLARE_SOA_COLUMN(Sigma1Pt, sigma1Pt, float); //! Covariance matrix
44-
DECLARE_SOA_COLUMN(RhoXY, rhoXY, int8_t); //! Covariance matrix in compressed form
45-
DECLARE_SOA_COLUMN(RhoPhiX, rhoPhiX, int8_t); //! Covariance matrix in compressed form
46-
DECLARE_SOA_COLUMN(RhoPhiY, rhoPhiY, int8_t); //! Covariance matrix in compressed form
47-
DECLARE_SOA_COLUMN(RhoTglX, rhoTglX, int8_t); //! Covariance matrix in compressed form
48-
DECLARE_SOA_COLUMN(RhoTglY, rhoTglY, int8_t); //! Covariance matrix in compressed form
49-
DECLARE_SOA_COLUMN(RhoTglPhi, rhoTglPhi, int8_t); //! Covariance matrix in compressed form
50-
DECLARE_SOA_COLUMN(Rho1PtX, rho1PtX, int8_t); //! Covariance matrix in compressed form
51-
DECLARE_SOA_COLUMN(Rho1PtY, rho1PtY, int8_t); //! Covariance matrix in compressed form
52-
DECLARE_SOA_COLUMN(Rho1PtPhi, rho1PtPhi, int8_t); //! Covariance matrix in compressed form
53-
DECLARE_SOA_COLUMN(Rho1PtTgl, rho1PtTgl, int8_t); //! Covariance matrix in compressed form
54-
55-
// Dynamic and expression columns
56-
DECLARE_SOA_DYNAMIC_COLUMN(Sign, sign, //! Sign of the track eletric charge
57-
[](float signed1Pt) -> short { return (signed1Pt > 0) ? 1 : -1; });
58-
DECLARE_SOA_DYNAMIC_COLUMN(Px, px, //!
59-
[](float pt, float phi) -> float {
60-
return pt * std::cos(phi);
61-
});
62-
DECLARE_SOA_DYNAMIC_COLUMN(Py, py, //!
63-
[](float pt, float phi) -> float {
64-
return pt * std::sin(phi);
65-
});
66-
DECLARE_SOA_DYNAMIC_COLUMN(Pz, pz, //!
67-
[](float pt, float tgl) -> float {
68-
return pt * tgl;
69-
});
70-
71-
DECLARE_SOA_EXPRESSION_COLUMN(Eta, eta, float, //!
72-
-1.f * nlog(ntan(o2::constants::math::PIQuarter - 0.5f * natan(aod::fwdtrackrealign::tgl))));
73-
DECLARE_SOA_EXPRESSION_COLUMN(Pt, pt, float, //!
74-
ifnode(nabs(aod::fwdtrackrealign::signed1Pt) < o2::constants::math::Almost0, o2::constants::math::VeryBig, nabs(1.f / aod::fwdtrackrealign::signed1Pt)));
75-
DECLARE_SOA_EXPRESSION_COLUMN(P, p, float, //!
76-
ifnode((nabs(aod::fwdtrackrealign::signed1Pt) < o2::constants::math::Almost0) || (nabs(o2::constants::math::PIQuarter - 0.5f * natan(aod::fwdtrackrealign::tgl)) < o2::constants::math::Almost0), o2::constants::math::VeryBig, 0.5f * (ntan(o2::constants::math::PIQuarter - 0.5f * natan(aod::fwdtrackrealign::tgl)) + 1.f / ntan(o2::constants::math::PIQuarter - 0.5f * natan(aod::fwdtrackrealign::tgl))) / nabs(aod::fwdtrackrealign::signed1Pt)));
77-
DECLARE_SOA_EXPRESSION_COLUMN(CXX, cXX, float, //!
78-
aod::fwdtrackrealign::sigmaX* aod::fwdtrackrealign::sigmaX);
79-
DECLARE_SOA_EXPRESSION_COLUMN(CXY, cXY, float, //!
80-
(aod::fwdtrackrealign::rhoXY / 128.f) * (aod::fwdtrackrealign::sigmaX * aod::fwdtrackrealign::sigmaY));
81-
DECLARE_SOA_EXPRESSION_COLUMN(CYY, cYY, float, //!
82-
aod::fwdtrackrealign::sigmaY* aod::fwdtrackrealign::sigmaY);
83-
DECLARE_SOA_EXPRESSION_COLUMN(CPhiX, cPhiX, float, //!
84-
(aod::fwdtrackrealign::rhoPhiX / 128.f) * (aod::fwdtrackrealign::sigmaPhi * aod::fwdtrackrealign::sigmaX));
85-
DECLARE_SOA_EXPRESSION_COLUMN(CPhiY, cPhiY, float, //!
86-
(aod::fwdtrackrealign::rhoPhiY / 128.f) * (aod::fwdtrackrealign::sigmaPhi * aod::fwdtrackrealign::sigmaY));
87-
DECLARE_SOA_EXPRESSION_COLUMN(CPhiPhi, cPhiPhi, float, //!
88-
aod::fwdtrackrealign::sigmaPhi* aod::fwdtrackrealign::sigmaPhi);
89-
DECLARE_SOA_EXPRESSION_COLUMN(CTglX, cTglX, float, //!
90-
(aod::fwdtrackrealign::rhoTglX / 128.f) * (aod::fwdtrackrealign::sigmaTgl * aod::fwdtrackrealign::sigmaX));
91-
DECLARE_SOA_EXPRESSION_COLUMN(CTglY, cTglY, float, //!
92-
(aod::fwdtrackrealign::rhoTglY / 128.f) * (aod::fwdtrackrealign::sigmaTgl * aod::fwdtrackrealign::sigmaY));
93-
DECLARE_SOA_EXPRESSION_COLUMN(CTglPhi, cTglPhi, float, //!
94-
(aod::fwdtrackrealign::rhoTglPhi / 128.f) * (aod::fwdtrackrealign::sigmaTgl * aod::fwdtrackrealign::sigmaPhi));
95-
DECLARE_SOA_EXPRESSION_COLUMN(CTglTgl, cTglTgl, float, //!
96-
aod::fwdtrackrealign::sigmaTgl* aod::fwdtrackrealign::sigmaTgl);
97-
DECLARE_SOA_EXPRESSION_COLUMN(C1PtY, c1PtY, float, //!
98-
(aod::fwdtrackrealign::rho1PtY / 128.f) * (aod::fwdtrackrealign::sigma1Pt * aod::fwdtrackrealign::sigmaY));
99-
DECLARE_SOA_EXPRESSION_COLUMN(C1PtX, c1PtX, float, //!
100-
(aod::fwdtrackrealign::rho1PtX / 128.f) * (aod::fwdtrackrealign::sigma1Pt * aod::fwdtrackrealign::sigmaX));
101-
DECLARE_SOA_EXPRESSION_COLUMN(C1PtPhi, c1PtPhi, float, //!
102-
(aod::fwdtrackrealign::rho1PtPhi / 128.f) * (aod::fwdtrackrealign::sigma1Pt * aod::fwdtrackrealign::sigmaPhi));
103-
DECLARE_SOA_EXPRESSION_COLUMN(C1PtTgl, c1PtTgl, float, //!
104-
(aod::fwdtrackrealign::rho1PtTgl / 128.f) * (aod::fwdtrackrealign::sigma1Pt * aod::fwdtrackrealign::sigmaTgl));
105-
DECLARE_SOA_EXPRESSION_COLUMN(C1Pt21Pt2, c1Pt21Pt2, float, //!
106-
aod::fwdtrackrealign::sigma1Pt* aod::fwdtrackrealign::sigma1Pt);
107-
} // namespace fwdtrackrealign
108-
109-
// Tracks including MCH and/or MCH (plus optionally MFT) //!
11028
DECLARE_SOA_TABLE_FULL(StoredFwdTracksReAlign, "FwdTracksReAlign", "AOD", "FWDTRACKREALIGN",
111-
o2::soa::Index<>, fwdtrackrealign::CollisionId, fwdtrackrealign::FwdTrackId, fwdtrackrealign::TrackType, fwdtrackrealign::X, fwdtrackrealign::Y, fwdtrackrealign::Z, fwdtrackrealign::Phi, fwdtrackrealign::Tgl,
112-
fwdtrackrealign::Signed1Pt,
113-
fwdtrackrealign::Px<fwdtrackrealign::Pt, fwdtrackrealign::Phi>,
114-
fwdtrackrealign::Py<fwdtrackrealign::Pt, fwdtrackrealign::Phi>,
115-
fwdtrackrealign::Pz<fwdtrackrealign::Pt, fwdtrackrealign::Tgl>,
116-
fwdtrackrealign::Sign<fwdtrackrealign::Signed1Pt>,
117-
fwdtrackrealign::Chi2,
118-
fwdtrackrealign::IsRemovable);
119-
120-
DECLARE_SOA_TABLE_FULL(StoredFwdTrksCovReAlign, "FwdCovsReAlign", "AOD", "FWDCOVREALIGN", //!
121-
fwdtrackrealign::SigmaX, fwdtrackrealign::SigmaY, fwdtrackrealign::SigmaPhi, fwdtrackrealign::SigmaTgl, fwdtrackrealign::Sigma1Pt,
122-
fwdtrackrealign::RhoXY, fwdtrackrealign::RhoPhiY, fwdtrackrealign::RhoPhiX, fwdtrackrealign::RhoTglX, fwdtrackrealign::RhoTglY,
123-
fwdtrackrealign::RhoTglPhi, fwdtrackrealign::Rho1PtX, fwdtrackrealign::Rho1PtY, fwdtrackrealign::Rho1PtPhi, fwdtrackrealign::Rho1PtTgl);
29+
o2::soa::Index<>, fwdtrack::CollisionId, fwdtrack::TrackType,
30+
fwdtrack::X, fwdtrack::Y, fwdtrack::Z, fwdtrack::Phi, fwdtrack::Tgl,
31+
fwdtrack::Signed1Pt, fwdtrack::NClusters, fwdtrack::PDca, fwdtrack::RAtAbsorberEnd,
32+
fwdtrackrealign::IsRemovable,
33+
fwdtrack::Px<fwdtrack::Pt, fwdtrack::Phi>,
34+
fwdtrack::Py<fwdtrack::Pt, fwdtrack::Phi>,
35+
fwdtrack::Pz<fwdtrack::Pt, fwdtrack::Tgl>,
36+
fwdtrack::Sign<fwdtrack::Signed1Pt>,
37+
fwdtrack::Chi2, fwdtrack::Chi2MatchMCHMID, fwdtrack::Chi2MatchMCHMFT,
38+
fwdtrack::MatchScoreMCHMFT, fwdtrack::MFTTrackId, fwdtrack::MCHTrackId,
39+
fwdtrack::MCHBitMap, fwdtrack::MIDBitMap, fwdtrack::MIDBoards,
40+
fwdtrack::TrackTime, fwdtrack::TrackTimeRes);
12441

12542
// extended table with expression columns that can be used as arguments of dynamic columns
12643
DECLARE_SOA_EXTENDED_TABLE_USER(FwdTracksReAlign, StoredFwdTracksReAlign, "FWDTRKREALIGNEXT", //!
127-
fwdtrackrealign::Pt,
128-
fwdtrackrealign::Eta,
129-
fwdtrackrealign::P); // the table name has here to be the one with EXT which is not nice and under study
44+
fwdtrack::Pt,
45+
fwdtrack::Eta,
46+
fwdtrack::P);
47+
48+
DECLARE_SOA_TABLE_FULL(StoredFwdTrksCovReAlign, "FwdCovsReAlign", "AOD", "FWDCOVREALIGN",
49+
fwdtrack::SigmaX, fwdtrack::SigmaY, fwdtrack::SigmaPhi, fwdtrack::SigmaTgl, fwdtrack::Sigma1Pt,
50+
fwdtrack::RhoXY, fwdtrack::RhoPhiY, fwdtrack::RhoPhiX, fwdtrack::RhoTglX, fwdtrack::RhoTglY,
51+
fwdtrack::RhoTglPhi, fwdtrack::Rho1PtX, fwdtrack::Rho1PtY, fwdtrack::Rho1PtPhi, fwdtrack::Rho1PtTgl);
13052

13153
// extended table with expression columns that can be used as arguments of dynamic columns
13254
DECLARE_SOA_EXTENDED_TABLE_USER(FwdTrksCovReAlign, StoredFwdTrksCovReAlign, "FWDCOVREALIGNEXT", //!
133-
fwdtrackrealign::CXX,
134-
fwdtrackrealign::CXY,
135-
fwdtrackrealign::CYY,
136-
fwdtrackrealign::CPhiX,
137-
fwdtrackrealign::CPhiY,
138-
fwdtrackrealign::CPhiPhi,
139-
fwdtrackrealign::CTglX,
140-
fwdtrackrealign::CTglY,
141-
fwdtrackrealign::CTglPhi,
142-
fwdtrackrealign::CTglTgl,
143-
fwdtrackrealign::C1PtX,
144-
fwdtrackrealign::C1PtY,
145-
fwdtrackrealign::C1PtPhi,
146-
fwdtrackrealign::C1PtTgl,
147-
fwdtrackrealign::C1Pt21Pt2); // the table name has here to be the one with EXT which is not nice and under study
55+
fwdtrack::CXX,
56+
fwdtrack::CXY,
57+
fwdtrack::CYY,
58+
fwdtrack::CPhiX,
59+
fwdtrack::CPhiY,
60+
fwdtrack::CPhiPhi,
61+
fwdtrack::CTglX,
62+
fwdtrack::CTglY,
63+
fwdtrack::CTglPhi,
64+
fwdtrack::CTglTgl,
65+
fwdtrack::C1PtX,
66+
fwdtrack::C1PtY,
67+
fwdtrack::C1PtPhi,
68+
fwdtrack::C1PtTgl,
69+
fwdtrack::C1Pt21Pt2);
14870

14971
using FwdTrackRealign = FwdTracksReAlign::iterator;
15072
using FwdTrkCovRealign = FwdTrksCovReAlign::iterator;

Common/DataModel/PmdTable.h

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2+
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3+
// All rights not expressly granted are reserved.
4+
//
5+
// This software is distributed under the terms of the GNU General Public
6+
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7+
//
8+
// In applying this license CERN does not waive the privileges and immunities
9+
// granted to it by virtue of its status as an Intergovernmental Organization
10+
// or submit itself to any jurisdiction.
11+
///
12+
/// \file PmdTable.h
13+
///
14+
/// \brief pmd index table define
15+
/// \author Abhi Modak (abhi.modak@cern.ch)
16+
/// \since May 17, 2025
17+
18+
#ifndef COMMON_DATAMODEL_PMDTABLE_H_
19+
#define COMMON_DATAMODEL_PMDTABLE_H_
20+
21+
#include "Framework/AnalysisDataModel.h"
22+
23+
namespace o2::aod
24+
{
25+
namespace pmdtrack
26+
{
27+
DECLARE_SOA_INDEX_COLUMN(Collision, collision);
28+
DECLARE_SOA_ARRAY_INDEX_COLUMN(Collision, collisions);
29+
DECLARE_SOA_INDEX_COLUMN(BC, bc);
30+
DECLARE_SOA_SLICE_INDEX_COLUMN(Pmd, pmd);
31+
} // namespace pmdtrack
32+
33+
DECLARE_SOA_INDEX_TABLE_USER(PMDTracksIndex, BCs, "PMDTRKIDX", pmdtrack::CollisionId, pmdtrack::BCId, pmdtrack::PmdIdSlice);
34+
} // namespace o2::aod
35+
36+
#endif // COMMON_DATAMODEL_PMDTABLE_H_

Common/LegacyDataQA/CMakeLists.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,9 @@ o2physics_add_dpl_workflow(centqa
2222
o2physics_add_dpl_workflow(tpcpidqa
2323
SOURCES tpcpidqa.cxx
2424
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore
25-
COMPONENT_NAME Analysis)
25+
COMPONENT_NAME Analysis)
26+
27+
o2physics_add_dpl_workflow(pmd-qa
28+
SOURCES pmdQa.cxx
29+
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore
30+
COMPONENT_NAME Analysis)

Common/LegacyDataQA/pmdQa.cxx

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2+
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3+
// All rights not expressly granted are reserved.
4+
//
5+
// This software is distributed under the terms of the GNU General Public
6+
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7+
//
8+
// In applying this license CERN does not waive the privileges and immunities
9+
// granted to it by virtue of its status as an Intergovernmental Organization
10+
// or submit itself to any jurisdiction.
11+
///
12+
/// \file pmdQa.cxx
13+
///
14+
/// \brief QA task to check PMD info on Run 2 converted data
15+
/// \author Abhi Modak (abhi.modak@cern.ch)
16+
/// \since May 17, 2025
17+
18+
#include <cstdlib>
19+
#include <cmath>
20+
#include <vector>
21+
22+
#include "Framework/runDataProcessing.h"
23+
#include "Framework/AnalysisTask.h"
24+
#include "Framework/ASoA.h"
25+
#include "Framework/AnalysisDataModel.h"
26+
#include "Common/DataModel/EventSelection.h"
27+
#include "Common/DataModel/PmdTable.h"
28+
#include "Framework/O2DatabasePDGPlugin.h"
29+
#include "CCDB/BasicCCDBManager.h"
30+
#include "TH1F.h"
31+
#include "TH2F.h"
32+
33+
using namespace o2;
34+
using namespace o2::aod::run2;
35+
using namespace o2::framework;
36+
using namespace o2::aod::evsel;
37+
using namespace o2::framework::expressions;
38+
39+
struct BuiltPmdIndex {
40+
// build the index table PMDTracksIndex
41+
Builds<aod::PMDTracksIndex> idx;
42+
void init(InitContext const&) {}
43+
};
44+
45+
struct PmdQa {
46+
47+
HistogramRegistry histos{"Histos", {}, OutputObjHandlingPolicy::AnalysisObject};
48+
ConfigurableAxis axisEventBin{"axisEventBin", {4, 0.5, 4.5}, ""};
49+
ConfigurableAxis axisVtxZBin{"axisVtxZBin", {40, -20, 20}, ""};
50+
ConfigurableAxis axisNPMDtracksBin{"axisNPMDtracksBin", {500, 0, 500}, "Number of pmdtracks"};
51+
ConfigurableAxis axisClsxyBin{"axisClsxyBin", {200, -100, 100}, ""};
52+
ConfigurableAxis axisAdcBin{"axisAdcBin", {200, 0, 2000}, ""};
53+
ConfigurableAxis axisEtaBin{"axisEtaBin", {10, 2.1, 4.1}, ""};
54+
ConfigurableAxis axisNcellBin{"axisNcellBin", {50, -0.5, 49.5}, ""};
55+
Configurable<int> fMipCut{"fMipCut", 432, "fMipCut"};
56+
Configurable<int> fNcellCut{"fNcellCut", 2, "fNcellCut"};
57+
Configurable<float> fEtalow{"fEtalow", 2.3, "fEtalow"};
58+
Configurable<float> fEtahigh{"fEtahigh", 3.9, "fEtahigh"};
59+
Configurable<float> fVtxCut{"fVtxCut", 10.0, "fVtxCut"};
60+
61+
void init(InitContext&)
62+
{
63+
64+
AxisSpec axisEvent = {axisEventBin, "Event", "EventAxis"};
65+
AxisSpec axisVtxZ = {axisVtxZBin, "VtxZ", "VtxZAxis"};
66+
AxisSpec axisNPMDtracks = {axisNPMDtracksBin, "NPMDtracks", "NPMDtracksAxis"};
67+
AxisSpec axisClsxy = {axisClsxyBin, "Clsxy", "ClsxyAxis"};
68+
AxisSpec axisAdc = {axisAdcBin, "Adc", "AdcAxis"};
69+
AxisSpec axisEta = {axisEtaBin, "Eta", "EtaAxis"};
70+
AxisSpec axisNcell = {axisNcellBin, "Ncell", "NcellAxis"};
71+
72+
histos.add("hEventHist", "hEventHist", kTH1F, {axisEvent});
73+
histos.add("hVtxZHist", "hVtxZHist", kTH1F, {axisVtxZ});
74+
histos.add("hNPMDtracks", "Number of pmdtracks", kTH1F, {axisNPMDtracks});
75+
histos.add("hClusXY", "hClusXY", kTH2F, {axisClsxy, axisClsxy});
76+
histos.add("hClusAdc", "hClusAdc", kTH1F, {axisAdc});
77+
histos.add("hetacls", "hetacls", kTH1F, {axisEta});
78+
histos.add("hclsncell", "hclsncell", kTH1F, {axisNcell});
79+
}
80+
81+
using ColTable = soa::Join<aod::Collisions, aod::PMDTracksIndex>;
82+
using ColevSel = soa::Join<ColTable, aod::EvSels>;
83+
84+
void process(ColevSel::iterator const& collision, aod::Pmds const&)
85+
{
86+
histos.fill(HIST("hEventHist"), 1);
87+
if (collision.sel7()) {
88+
return;
89+
}
90+
histos.fill(HIST("hEventHist"), 2);
91+
if (std::abs(collision.posZ()) >= fVtxCut) {
92+
return;
93+
}
94+
histos.fill(HIST("hEventHist"), 3);
95+
histos.fill(HIST("hVtxZHist"), collision.posZ());
96+
97+
if (collision.has_pmd()) {
98+
histos.fill(HIST("hEventHist"), 4);
99+
auto tracks = collision.pmd();
100+
histos.fill(HIST("hNPMDtracks"), tracks.size());
101+
for (const auto& track : tracks) {
102+
if (track.pmddet() == 1) {
103+
return;
104+
}
105+
if (track.pmdclsz() == 0) {
106+
return;
107+
}
108+
if (!track.pmdmodule()) {
109+
return;
110+
}
111+
histos.fill(HIST("hClusXY"), track.pmdclsx(), track.pmdclsy());
112+
histos.fill(HIST("hClusAdc"), track.pmdclsadc());
113+
float rdist = std::sqrt(track.pmdclsx() * track.pmdclsx() + track.pmdclsy() * track.pmdclsy());
114+
float theta = std::atan2(rdist, track.pmdclsz());
115+
float etacls = -std::log(std::tan(0.5 * theta));
116+
if (track.pmdclsadc() > fMipCut && track.pmdncell() > fNcellCut) {
117+
if (etacls > fEtalow && etacls < fEtahigh) {
118+
histos.fill(HIST("hetacls"), etacls);
119+
histos.fill(HIST("hclsncell"), track.pmdncell());
120+
}
121+
}
122+
}
123+
}
124+
}
125+
};
126+
127+
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
128+
{
129+
return WorkflowSpec{
130+
adaptAnalysisTask<PmdQa>(cfgc),
131+
adaptAnalysisTask<BuiltPmdIndex>(cfgc),
132+
};
133+
}

0 commit comments

Comments
 (0)