Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 11 additions & 9 deletions PWGEM/Dilepton/TableProducer/createEMEventDilepton.cxx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.

Check failure on line 1 in PWGEM/Dilepton/TableProducer/createEMEventDilepton.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[doc/file]

Provide mandatory file documentation.
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
// All rights not expressly granted are reserved.
//
Expand All @@ -8,7 +8,7 @@
// In applying this license CERN does not waive the privileges and immunities
// granted to it by virtue of its status as an Intergovernmental Organization
// or submit itself to any jurisdiction.
//

Check failure on line 11 in PWGEM/Dilepton/TableProducer/createEMEventDilepton.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[doc/file]

Documentation for \author is missing, incorrect or misplaced.

Check failure on line 11 in PWGEM/Dilepton/TableProducer/createEMEventDilepton.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[doc/file]

Documentation for \brief is missing, incorrect or misplaced.

Check failure on line 11 in PWGEM/Dilepton/TableProducer/createEMEventDilepton.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[doc/file]

Documentation for \file is missing, incorrect or misplaced.
// ========================
//
// This code produces reduced events for photon analyses.
Expand Down Expand Up @@ -57,8 +57,8 @@
Produces<o2::aod::EMEvents> event;
Produces<o2::aod::EMEventsXY> eventXY;
// Produces<o2::aod::EMEventsCov> eventcov;
Produces<o2::aod::EMEventsMult> event_mult;

Check failure on line 60 in PWGEM/Dilepton/TableProducer/createEMEventDilepton.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[name/function-variable]

Use lowerCamelCase for names of functions and variables.
Produces<o2::aod::EMEventsCent> event_cent;

Check failure on line 61 in PWGEM/Dilepton/TableProducer/createEMEventDilepton.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[name/function-variable]

Use lowerCamelCase for names of functions and variables.
Produces<o2::aod::EMEventsQvec> event_qvec;
Produces<o2::aod::EMSWTriggerInfos> emswtbit;
Produces<o2::aod::EMEventNormInfos> event_norm_info;
Expand Down Expand Up @@ -105,10 +105,10 @@
}

// In case override, don't proceed, please - no CCDB access required
if (d_bz_input > -990) {

Check failure on line 108 in PWGEM/Dilepton/TableProducer/createEMEventDilepton.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
d_bz = d_bz_input;
o2::parameters::GRPMagField grpmag;
if (fabs(d_bz) > 1e-5) {

Check failure on line 111 in PWGEM/Dilepton/TableProducer/createEMEventDilepton.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.

Check failure on line 111 in PWGEM/Dilepton/TableProducer/createEMEventDilepton.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
grpmag.setL3Current(30000.f / (d_bz / 5.0f));
}
mRunNumber = bc.runNumber();
Expand Down Expand Up @@ -136,7 +136,7 @@
mRunNumber = bc.runNumber();
}

Preslice<aod::Collisions> perBC = aod::collision::bcId;
// Preslice<aod::Collisions> perBC = aod::collision::bcId;
// Preslice<aod::V0PhotonsKF> perCollision_pcm = aod::v0photonkf::collisionId;
// PresliceUnsorted<aod::EMPrimaryElectrons> perCollision_el = aod::emprimaryelectron::collisionId;
// PresliceUnsorted<aod::EMPrimaryMuons> perCollision_mu = aod::emprimarymuon::collisionId;
Expand All @@ -163,16 +163,18 @@
auto bc = collision.template foundBC_as<TBCs>();
initCCDB(bc);

if (!collision.isSelected()) { // minimal cut for MB
continue;
if (collision.selection_bit(o2::aod::evsel::kIsTriggerTVX)) {
if constexpr (eventtype == EMEventType::kEvent) {
event_norm_info(collision.alias_raw(), collision.selection_raw(), collision.rct_raw(), static_cast<int16_t>(10.f * collision.posZ()), 105.f);
} else if constexpr (eventtype == EMEventType::kEvent_Cent || eventtype == EMEventType::kEvent_Cent_Qvec) {
event_norm_info(collision.alias_raw(), collision.selection_raw(), collision.rct_raw(), static_cast<int16_t>(10.f * collision.posZ()), collision.centFT0C());
} else {
event_norm_info(collision.alias_raw(), collision.selection_raw(), collision.rct_raw(), static_cast<int16_t>(10.f * collision.posZ()), 105.f);
}
}

if constexpr (eventtype == EMEventType::kEvent) {
event_norm_info(collision.alias_raw(), collision.selection_raw(), collision.rct_raw(), static_cast<int16_t>(10.f * collision.posZ()), 105.f);
} else if constexpr (eventtype == EMEventType::kEvent_Cent || eventtype == EMEventType::kEvent_Cent_Qvec) {
event_norm_info(collision.alias_raw(), collision.selection_raw(), collision.rct_raw(), static_cast<int16_t>(10.f * collision.posZ()), collision.centFT0C());
} else {
event_norm_info(collision.alias_raw(), collision.selection_raw(), collision.rct_raw(), static_cast<int16_t>(10.f * collision.posZ()), 105.f);
if (!collision.isSelected()) { // minimal cut for MB
continue;
}

if (!collision.isEoI()) { // events with at least 1 lepton for data reduction.
Expand Down Expand Up @@ -214,7 +216,7 @@
float q2xft0m = 999.f, q2yft0m = 999.f, q2xft0a = 999.f, q2yft0a = 999.f, q2xft0c = 999.f, q2yft0c = 999.f, q2xbpos = 999.f, q2ybpos = 999.f, q2xbneg = 999.f, q2ybneg = 999.f, q2xbtot = 999.f, q2ybtot = 999.f;
float q3xft0m = 999.f, q3yft0m = 999.f, q3xft0a = 999.f, q3yft0a = 999.f, q3xft0c = 999.f, q3yft0c = 999.f, q3xbpos = 999.f, q3ybpos = 999.f, q3xbneg = 999.f, q3ybneg = 999.f, q3xbtot = 999.f, q3ybtot = 999.f;

if (collision.qvecFT0CReVec().size() >= 2) { // harmonics 2,3

Check failure on line 219 in PWGEM/Dilepton/TableProducer/createEMEventDilepton.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
q2xft0m = collision.qvecFT0MReVec()[0], q2xft0a = collision.qvecFT0AReVec()[0], q2xft0c = collision.qvecFT0CReVec()[0], q2xbpos = collision.qvecBPosReVec()[0], q2xbneg = collision.qvecBNegReVec()[0], q2xbtot = collision.qvecBTotReVec()[0];
q2yft0m = collision.qvecFT0MImVec()[0], q2yft0a = collision.qvecFT0AImVec()[0], q2yft0c = collision.qvecFT0CImVec()[0], q2ybpos = collision.qvecBPosImVec()[0], q2ybneg = collision.qvecBNegImVec()[0], q2ybtot = collision.qvecBTotImVec()[0];
q3xft0m = collision.qvecFT0MReVec()[1], q3xft0a = collision.qvecFT0AReVec()[1], q3xft0c = collision.qvecFT0CReVec()[1], q3xbpos = collision.qvecBPosReVec()[1], q3xbneg = collision.qvecBNegReVec()[1], q3xbtot = collision.qvecBTotReVec()[1];
Expand Down
81 changes: 56 additions & 25 deletions PWGEM/Dilepton/Tasks/eventQC.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -85,12 +85,12 @@ struct eventQC {

struct : ConfigurableGroup {
std::string prefix = "eventcut_group";
Configurable<float> cfgZvtxMin{"cfgZvtxMin", -10.f, "min. Zvtx"};
Configurable<float> cfgZvtxMax{"cfgZvtxMax", 10.f, "max. Zvtx"};
Configurable<bool> cfgRequireSel8{"cfgRequireSel8", true, "require sel8 in event cut"};
Configurable<bool> cfgRequireFT0AND{"cfgRequireFT0AND", true, "require FT0AND in event cut"};
Configurable<bool> cfgRequireNoTFB{"cfgRequireNoTFB", true, "require No time frame border in event cut"};
Configurable<bool> cfgRequireNoITSROFB{"cfgRequireNoITSROFB", true, "require no ITS readout frame border in event cut"};
Configurable<float> cfgZvtxMin{"cfgZvtxMin", -1e+10, "min. Zvtx"};
Configurable<float> cfgZvtxMax{"cfgZvtxMax", 1e+10, "max. Zvtx"};
Configurable<bool> cfgRequireSel8{"cfgRequireSel8", false, "require sel8 in event cut"};
Configurable<bool> cfgRequireFT0AND{"cfgRequireFT0AND", false, "require FT0AND in event cut"};
Configurable<bool> cfgRequireNoTFB{"cfgRequireNoTFB", false, "require No time frame border in event cut"};
Configurable<bool> cfgRequireNoITSROFB{"cfgRequireNoITSROFB", false, "require no ITS readout frame border in event cut"};
Configurable<bool> cfgRequireVertexITSTPC{"cfgRequireVertexITSTPC", false, "require Vertex ITSTPC in event cut"}; // ITS-TPC matched track contributes PV.
Configurable<bool> cfgRequireVertexTOFmatched{"cfgRequireVertexTOFmatched", false, "require Vertex TOFmatched in event cut"}; // ITS-TPC-TOF matched track contributes PV.
Configurable<bool> cfgRequireNoSameBunchPileup{"cfgRequireNoSameBunchPileup", false, "require no same bunch pileup in event cut"};
Expand Down Expand Up @@ -201,13 +201,14 @@ struct eventQC {

if (doprocessEventQC_SWT) {
fRegistry.add("BC/hNcoll", "Number of collisions per triggered BC;N_{collision} per triggered BC", kTH1F, {{11, -0.5, +10.5}}, false);
fRegistry.add("BC/hDeltaT", "diff. in collision time per BC;#DeltaT_{coll} (ns)", kTH1F, {{500, -25, +25}}, false);
fRegistry.add("BC/hDeltaZ", "diff. in collision Z_{vtx} per BC;#DeltaZ_{vtx} (cm)", kTH1F, {{1000, -5, +5}}, false);
fRegistry.add("BC/hCorrNcontrib", "hMultNTracksPV;", kTH2F, {{axis_mult_ncontrib}, {axis_mult_ncontrib}}, false);
fRegistry.add("BC/Collision/hMultNTracksPV", "hMultNTracksPV;N_{track} to PV in |#eta| < 0.8", kTH1F, {{axis_mult_ncontrib08}}, false);
fRegistry.add("BC/Collision/hMultNTracksPV", "hMultNTracksPV;N_{track} to PV", kTH1F, {{axis_mult_ncontrib}}, false);
fRegistry.add("BC/Collision/hMultFT0AFT0C", "hMultFT0AFT0C;mult. FT0A;mult. FT0C", kTH2F, {{axis_mult_ft0a}, {axis_mult_ft0c}}, false);
fRegistry.add("BC/Collision/hMultFT0AFV0A", "hMultFT0AFV0A;mult. FT0A;mult. FV0A", kTH2F, {{axis_mult_ft0a}, {axis_mult_fv0a}}, false);
fRegistry.add("BC/Collision/hMultFT0CFV0A", "hMultFT0CFV0A;mult. FT0C;mult. FV0A", kTH2F, {{axis_mult_ft0c}, {axis_mult_fv0a}}, false);

fRegistry.add("perBC/hDeltaTZ", "#DeltaZ_{vtx} vs. #DeltaT of collisions per BC;#DeltaZ_{vtx} (cm);#DeltaT (ns)", kTH2F, {{100, -5, +5}, {50, -25, +25}}, false);
fRegistry.add("perBC/hCorrNcontrib", "hMultNTracksPV;", kTH2F, {{axis_mult_ncontrib}, {axis_mult_ncontrib}}, false);
// fRegistry.addClone("perBC/", "beyondBC/");
}

// event info
Expand Down Expand Up @@ -238,7 +239,8 @@ struct eventQC {

if (cfgFillEvent) {
fRegistry.add("Event/before/hZvtx", "vertex z; Z_{vtx} (cm)", kTH1F, {{100, -50, +50}}, false);
fRegistry.add("Event/before/hMultNTracksPV", "hMultNTracksPV; N_{track} to PV in |#eta| < 0.8", kTH1F, {{axis_mult_ncontrib08}}, false);
fRegistry.add("Event/before/hMultNTracksPV", "hMultNTracksPV; N_{track} to PV", kTH1F, {{axis_mult_ncontrib}}, false);
fRegistry.add("Event/before/hMultNTracksPV08", "hMultNTracksPV08; N_{track} to PV in |#eta| < 0.8", kTH1F, {{axis_mult_ncontrib08}}, false);
fRegistry.add("Event/before/hMultFT0AFT0C", "hMultFT0AFT0C;mult. FT0A;mult. FT0C", kTH2F, {{axis_mult_ft0a}, {axis_mult_ft0c}}, false);
fRegistry.add("Event/before/hMultFT0AFV0A", "hMultFT0AFV0A;mult. FT0A;mult. FV0A", kTH2F, {{axis_mult_ft0a}, {axis_mult_fv0a}}, false);
fRegistry.add("Event/before/hMultFT0CFV0A", "hMultFT0CFV0A;mult. FT0C;mult. FV0A", kTH2F, {{axis_mult_ft0c}, {axis_mult_fv0a}}, false);
Expand Down Expand Up @@ -479,7 +481,8 @@ struct eventQC {
}
fRegistry.fill(HIST("Event/") + HIST(event_types[ev_id]) + HIST("hZvtx"), collision.posZ());

fRegistry.fill(HIST("Event/") + HIST(event_types[ev_id]) + HIST("hMultNTracksPV"), collision.multNTracksPV());
fRegistry.fill(HIST("Event/") + HIST(event_types[ev_id]) + HIST("hMultNTracksPV"), collision.numContrib());
fRegistry.fill(HIST("Event/") + HIST(event_types[ev_id]) + HIST("hMultNTracksPV08"), collision.multNTracksPV());
fRegistry.fill(HIST("Event/") + HIST(event_types[ev_id]) + HIST("hMultFT0AFT0C"), collision.multFT0A(), collision.multFT0C());
fRegistry.fill(HIST("Event/") + HIST(event_types[ev_id]) + HIST("hMultFT0AFV0A"), collision.multFT0A(), collision.multFV0A());
fRegistry.fill(HIST("Event/") + HIST(event_types[ev_id]) + HIST("hMultFT0CFV0A"), collision.multFT0C(), collision.multFV0A());
Expand Down Expand Up @@ -740,7 +743,7 @@ struct eventQC {
}

template <typename TCollision>
bool isSelectedEvent(TCollision const& collision)
bool isSelectedCollision(TCollision const& collision)
{
if (eventcuts.cfgRequireSel8 && !collision.sel8()) {
return false;
Expand Down Expand Up @@ -838,38 +841,66 @@ struct eventQC {

SliceCache cache;
Preslice<aod::Tracks> perCol = o2::aod::track::collisionId;
Preslice<aod::Collisions> perBC = o2::aod::collision::bcId;
// Preslice<aod::Collisions> perBC = o2::aod::collision::bcId;
PresliceUnsorted<MyCollisions> perFoundBC = aod::evsel::foundBCId;

template <bool isTriggerAnalysis, typename TBCs, typename TCollisions, typename TTracks>
void runQC(TBCs const& bcs, TCollisions const& collisions, TTracks const& tracks)
{
if constexpr (isTriggerAnalysis) {
// std::vector<int> selectedCollisionIds;
// selectedCollisionIds.reserve(collisions.size());

for (const auto& bc : bcs) {
initCCDB(bc);
if (!zorro.isSelected(bc.globalBC())) { // triggered BC
continue;
}

// if (!bc.selection_bit(o2::aod::evsel::kIsTriggerTVX)) {
// continue;
// }

const auto& collisions_per_bc = collisions.sliceBy(perBC, bc.globalIndex());
// const auto& collisions_per_bc = collisions.sliceBy(perBC, bc.globalIndex());
const auto& collisions_per_bc = collisions.sliceBy(perFoundBC, bc.globalIndex());
fRegistry.fill(HIST("BC/hNcoll"), collisions_per_bc.size());
for (const auto& collision : collisions_per_bc) {
fRegistry.fill(HIST("BC/Collision/hMultNTracksPV"), collision.multNTracksPV());
if (!isSelectedCollision(collision)) {
continue;
}

fRegistry.fill(HIST("BC/Collision/hMultNTracksPV"), collision.numContrib());
fRegistry.fill(HIST("BC/Collision/hMultFT0AFT0C"), collision.multFT0A(), collision.multFT0C());
fRegistry.fill(HIST("BC/Collision/hMultFT0AFV0A"), collision.multFT0A(), collision.multFV0A());
fRegistry.fill(HIST("BC/Collision/hMultFT0CFV0A"), collision.multFT0C(), collision.multFV0A());
// selectedCollisionIds.emplace_back(collision.globalIndex());
}

for (const auto& [col1, col2] : combinations(CombinationsStrictlyUpperIndexPolicy(collisions_per_bc, collisions_per_bc))) {
fRegistry.fill(HIST("BC/hDeltaZ"), col1.posZ() - col2.posZ());
fRegistry.fill(HIST("BC/hDeltaT"), col1.collisionTime() - col2.collisionTime());
fRegistry.fill(HIST("BC/hCorrNcontrib"), col1.numContrib(), col2.numContrib());
if (!isSelectedCollision(col1) || !isSelectedCollision(col2)) {
continue;
}
fRegistry.fill(HIST("perBC/hDeltaTZ"), col1.posZ() - col2.posZ(), col1.collisionTime() - col2.collisionTime());
fRegistry.fill(HIST("perBC/hCorrNcontrib"), col1.numContrib(), col2.numContrib());
} // end of pairing
} // end of bc loop
}

// for (const auto& collisionId1 : selectedCollisionIds) {
// const auto& col1 = collisions.rawIteratorAt(collisionId1);
// for (const auto& col2 : collisions) {
// if (!isSelectedCollision(col2)) {
// continue;
// }

// const auto& bc1 = col1.template bc_as<TBCs>(); // don't use foundBC for CEFP.
// const auto& bc2 = col2.template bc_as<TBCs>(); // don't use foundBC for CEFP.
// if (bc1.globalBC() == bc2.globalBC()) {
// continue;
// }
// fRegistry.fill(HIST("beyondBC/hDeltaTZ"), col1.posZ() - col2.posZ(), col1.collisionTime() - col2.collisionTime());
// fRegistry.fill(HIST("beyondBC/hCorrNcontrib"), col1.numContrib(), col2.numContrib());
// } // end of all collision loop
// } // end of selected collision loop

// selectedCollisionIds.clear();
// selectedCollisionIds.shrink_to_fit();
} // end of trigger QC

for (const auto& collision : collisions) {
if constexpr (isTriggerAnalysis) {
Expand All @@ -892,7 +923,7 @@ struct eventQC {
if (cfgFillEvent) {
fillEventInfo<0>(collision);
}
if (!isSelectedEvent(collision)) {
if (!isSelectedCollision(collision)) {
continue;
}
if (cfgFillEvent) {
Expand Down
21 changes: 12 additions & 9 deletions PWGEM/PhotonMeson/TableProducer/createEMEventPhoton.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -154,22 +154,25 @@ struct CreateEMEventPhoton {
auto bc = collision.template foundBC_as<TBCs>();
initCCDB(bc);

if (!collision.isSelected()) {
continue;
}
if (needEMCTrigger && !collision.alias_bit(kTVXinEMC)) {
continue;
}
if (needPHSTrigger && !collision.alias_bit(kTVXinPHOS)) {
continue;
}

if constexpr (eventtype == EMEventType::kEvent) {
event_norm_info(collision.alias_raw(), collision.selection_raw(), collision.rct_raw(), static_cast<int16_t>(10.f * collision.posZ()), 105.f);
} else if constexpr (eventtype == EMEventType::kEvent_Cent || eventtype == EMEventType::kEvent_Cent_Qvec) {
event_norm_info(collision.alias_raw(), collision.selection_raw(), collision.rct_raw(), static_cast<int16_t>(10.f * collision.posZ()), collision.centFT0C());
} else {
event_norm_info(collision.alias_raw(), collision.selection_raw(), collision.rct_raw(), static_cast<int16_t>(10.f * collision.posZ()), 105.f);
if (collision.selection_bit(o2::aod::evsel::kIsTriggerTVX)) {
if constexpr (eventtype == EMEventType::kEvent) {
event_norm_info(collision.alias_raw(), collision.selection_raw(), collision.rct_raw(), static_cast<int16_t>(10.f * collision.posZ()), 105.f);
} else if constexpr (eventtype == EMEventType::kEvent_Cent || eventtype == EMEventType::kEvent_Cent_Qvec) {
event_norm_info(collision.alias_raw(), collision.selection_raw(), collision.rct_raw(), static_cast<int16_t>(10.f * collision.posZ()), collision.centFT0C());
} else {
event_norm_info(collision.alias_raw(), collision.selection_raw(), collision.rct_raw(), static_cast<int16_t>(10.f * collision.posZ()), 105.f);
}
}

if (!collision.isSelected()) {
continue;
}

if (!collision.isEoI()) { // events with at least 1 photon for data reduction.
Expand Down
Loading