Skip to content
Merged
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
80 changes: 78 additions & 2 deletions PWGCF/EbyEFluctuations/Tasks/MeanptFluctuations.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,11 @@
// or submit itself to any jurisdiction.

#include <CCDB/BasicCCDBManager.h>
#include <algorithm>
#include <numeric>
#include <cmath>
#include <vector>

#include "Framework/AnalysisTask.h"
#include "Framework/runDataProcessing.h"
#include "Framework/ASoAHelpers.h"
Expand All @@ -22,6 +25,7 @@
#include "Common/Core/TrackSelection.h"
#include "Common/DataModel/TrackSelectionTables.h"
#include "Common/DataModel/Centrality.h"
#include "Common/DataModel/Multiplicity.h"

#include "TList.h"
#include "TProfile.h"
Expand All @@ -30,6 +34,7 @@
#include "TH1D.h"
#include "TRandom3.h"
#include "TMath.h"
#include "TF1.h"

namespace o2::aod
{
Expand All @@ -49,14 +54,19 @@ using namespace o2;
using namespace o2::framework;
using namespace o2::framework::expressions;

#define O2_DEFINE_CONFIGURABLE(NAME, TYPE, DEFAULT, HELP) Configurable<TYPE> NAME{#NAME, DEFAULT, HELP};

struct MeanptFluctuations_QA_QnTable {

Configurable<float> cfgCutVertex{"cfgCutVertex", 10.0f, "Accepted z-vertex range"};
Configurable<float> cfgCutPtLower{"cfgCutPtLower", 0.2f, "Lower pT cut"};
Configurable<float> cfgCutPtUpper{"cfgCutPtUpper", 3.0f, "Higher pT cut"};
Configurable<float> cfgCutTpcChi2NCl{"cfgCutTpcChi2NCl", 2.5f, "Maximum TPCchi2NCl"};
// Configurable<float> cfgCutTrackDcaXY{"cfgCutTrackDcaXY", 0.1f, "Maximum DcaXY"};
// Configurable<float> cfgCutTrackDcaXY{"cfgCutTrackDcaXY", 0.2f, "Maximum DcaXY"};
Configurable<float> cfgCutTrackDcaZ{"cfgCutTrackDcaZ", 2.0f, "Maximum DcaZ"};
ConfigurableAxis nchAxis{"nchAxis", {5000, 0.5, 5000.5}, ""};

O2_DEFINE_CONFIGURABLE(cfgUse22sEventCut, bool, true, "Use 22s event cut on mult correlations")
Comment on lines 61 to +69

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would recommend to, at some point, unify the way configurables are defined

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dear Victor, Thank you for your suggestions. I will update this in my next commit.


// Filter command***********
Filter collisionFilter = nabs(aod::collision::posZ) < cfgCutVertex;
Expand All @@ -71,10 +81,17 @@ struct MeanptFluctuations_QA_QnTable {
HistogramRegistry histos{"Histos", {}, OutputObjHandlingPolicy::AnalysisObject};

// filtering collisions and tracks***********
using aodCollisions = soa::Filtered<soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Cs>>;
using aodCollisions = soa::Filtered<soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Cs, aod::Mults>>;
// using aodCollisions = soa::Filtered<soa::Join<aod::Collisions, aod::EvSels>>;
using aodTracks = soa::Filtered<soa::Join<aod::Tracks, aod::TrackSelection, aod::TracksExtra, aod::TracksDCA>>;

// Event selection cuts - Alex
TF1* fMultPVCutLow = nullptr;
TF1* fMultPVCutHigh = nullptr;
TF1* fMultCutLow = nullptr;
TF1* fMultCutHigh = nullptr;
TF1* fMultMultPVCut = nullptr;

// Equivalent of the AliRoot task UserCreateOutputObjects
void init(o2::framework::InitContext&)
{
Expand All @@ -97,15 +114,74 @@ struct MeanptFluctuations_QA_QnTable {
histos.add("hDcaXY", ";#it{dca}_{XY}", kTH1F, {{1000, -5, 5}});
histos.add("hDcaZ", ";#it{dca}_{Z}", kTH1F, {{1000, -5, 5}});
histos.add("hMeanPt", "", kTProfile, {centAxis});
histos.add("Hist2D_globalTracks_PVTracks", "", {HistType::kTH2D, {nchAxis, nchAxis}});
histos.add("Hist2D_cent_nch", "", {HistType::kTH2D, {nchAxis, centAxis}});

// Event selection - Alex
if (cfgUse22sEventCut) {
fMultPVCutLow = new TF1("fMultPVCutLow", "[0]+[1]*x+[2]*x*x+[3]*x*x*x - 2.5*([4]+[5]*x+[6]*x*x+[7]*x*x*x+[8]*x*x*x*x)", 0, 100);
fMultPVCutLow->SetParameters(2834.66, -87.0127, 0.915126, -0.00330136, 332.513, -12.3476, 0.251663, -0.00272819, 1.12242e-05);
fMultPVCutHigh = new TF1("fMultPVCutHigh", "[0]+[1]*x+[2]*x*x+[3]*x*x*x + 2.5*([4]+[5]*x+[6]*x*x+[7]*x*x*x+[8]*x*x*x*x)", 0, 100);
fMultPVCutHigh->SetParameters(2834.66, -87.0127, 0.915126, -0.00330136, 332.513, -12.3476, 0.251663, -0.00272819, 1.12242e-05);

fMultCutLow = new TF1("fMultCutLow", "[0]+[1]*x+[2]*x*x+[3]*x*x*x - 2.5*([4]+[5]*x)", 0, 100);
fMultCutLow->SetParameters(1893.94, -53.86, 0.502913, -0.0015122, 109.625, -1.19253);
fMultCutHigh = new TF1("fMultCutHigh", "[0]+[1]*x+[2]*x*x+[3]*x*x*x + 3.*([4]+[5]*x)", 0, 100);
fMultCutHigh->SetParameters(1893.94, -53.86, 0.502913, -0.0015122, 109.625, -1.19253);
fMultMultPVCut = new TF1("fMultMultPVCut", "[0]+[1]*x+[2]*x*x", 0, 5000);
fMultMultPVCut->SetParameters(-0.1, 0.785, -4.7e-05);
}

} //! end init function

template <typename TCollision>
bool eventSelected(TCollision collision, const int& multTrk, const float& centrality)
{
if (collision.alias_bit(kTVXinTRD)) {
// TRD triggered
return 0;
}
float vtxz = -999;
if (collision.numContrib() > 1) {
vtxz = collision.posZ();
float zRes = TMath::Sqrt(collision.covZZ());
if (zRes > 0.25 && collision.numContrib() < 20)
vtxz = -999;
}
auto multNTracksPV = collision.multNTracksPV();

if ((vtxz > cfgCutVertex) || (vtxz < -1.0 * cfgCutVertex))
return 0;
if (multNTracksPV < fMultPVCutLow->Eval(centrality))
return 0;
if (multNTracksPV > fMultPVCutHigh->Eval(centrality))
return 0;
if (multTrk < fMultCutLow->Eval(centrality))
return 0;
if (multTrk > fMultCutHigh->Eval(centrality))
return 0;
if (multTrk > fMultMultPVCut->Eval(multNTracksPV))
return 0;

return 1;
}

Produces<aod::MultPtQn> mult_ptQn;

// void process(aod::Collision const& coll, aod::Tracks const& inputTracks)
void process(aodCollisions::iterator const& coll, aod::BCsWithTimestamps const&, aodTracks const& inputTracks)
{
if (!coll.sel8())
return;

const auto CentralityFT0C = coll.centFT0C();
if (cfgUse22sEventCut && !eventSelected(coll, inputTracks.size(), CentralityFT0C))
return;

histos.fill(HIST("hZvtx_after_sel"), coll.posZ());
histos.fill(HIST("hCentrality"), coll.centFT0C());
histos.fill(HIST("Hist2D_globalTracks_PVTracks"), coll.multNTracksPV(), inputTracks.size());
histos.fill(HIST("Hist2D_cent_nch"), inputTracks.size(), CentralityFT0C);

// variables
double cent = coll.centFT0C();
Expand Down