Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
08d95c0
[Common] Adding muonQA task (#11438)
ppoava Jun 4, 2025
f8b9552
[PWGDQ] Small fix for computing the TPC nSigmas when running the tabl…
iarsene Jun 4, 2025
0de7f1c
[PWGCF,PWGEM,PWGLF] Replace expression columns with dynamic columns i…
romainschotter Jun 4, 2025
9aceb89
[ALICE3] A3: update protection of DetLayer (#11381)
njacazio Jun 4, 2025
6490c62
[PWGJE] V0 Jet Finder: use V0 signal flags (#11190)
GijsvWeelden Jun 4, 2025
f240b3d
[PWGJE] separation of process functions for MCD and Data tables for T…
Archita-Dash Jun 4, 2025
a9d63e3
[PWGJE] Adding track level outlier cut (#11449)
dajones2 Jun 4, 2025
57ec0be
[PWGEM] LMee: adjusted q/pT binning and fixed DCA1vsDCA2 hist filling…
jjungIKF Jun 4, 2025
1545b2d
[PWGEM/Dilepton] reduce memory consumption in createResolutionMap.cxx…
dsekihat Jun 4, 2025
863dd60
[PWGLF] feat(kinkBuilder): use aod::BCs instead of aod::BCsWithTimest…
mpuccio Jun 4, 2025
b195616
[PWGLF] multiplicity and centrality (#11406)
lietava Jun 4, 2025
e2c77d4
[PWGHF,PWGJE] Unify and extend MC flags in candidate tables (3-prong,…
vkucera Jun 4, 2025
1184be4
[PWGDQ] Update HistogramLibrery (#11456)
Debadatta3337 Jun 4, 2025
663b702
[PWGLF] Change in hStrangeCorrelation (#11466)
lhusova Jun 4, 2025
ef6dcb2
[PWGCF] Update lambdaR2Correlation.cxx (#11465)
yashpatley Jun 5, 2025
296df02
[PWGCF] produce and apply Efficiency correction (#11469)
Luzhiyongg Jun 5, 2025
b3abf9d
[PWGLF] Full process function autoconfigure for strangeness builder s…
ddobrigk Jun 5, 2025
aa618e8
[PWGLF] Fix MC information for primaries and secondaries (#11452)
fmazzasc Jun 5, 2025
4c030d6
[PWGDQ] Fixing the initialization of histograms of reconstructed dimu…
lmattei01 Jun 5, 2025
bd07d65
[PWGLF] feat(nonPromptCascade): Introduce configurable triggers of in…
mpuccio Jun 5, 2025
7a52269
[PWGUD] Improving correlation for gap sides (#11435)
JosueMtzGar Jun 5, 2025
2aaed28
[PWGCF] Made a change to the RD method cuts (#11471)
JStaa Jun 5, 2025
df7102f
[PWGDQ] Update VarManager.h to correct the cos theta definition in PP…
KangkanGoswami Jun 5, 2025
8d72906
[PWGDQ] Add loading of geometry to dilepton-track task (#11478)
kaareendrup Jun 5, 2025
02ae8c6
[PWGLF] Lambda local polarization induced by jet in pp collision 13.6…
15071832337 Jun 5, 2025
98d6b15
[PWGCF] minor change in regard to MFT selection (#11479)
Thorkj Jun 5, 2025
e4e94eb
[PWGCF] add MC process (#11482)
Luzhiyongg Jun 5, 2025
6126331
[PWGHF] fix missing assignment of Lc gen pt (#11483)
Mingyu3360715 Jun 6, 2025
4b0fd87
meanpt
sweta29singh Jun 6, 2025
1b8a955
meanpt
sweta29singh Jun 9, 2025
a81561b
meanpt
sweta29singh Jun 9, 2025
7c97a79
Please consider the following formatting changes
alibuild Jun 9, 2025
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
75 changes: 72 additions & 3 deletions ALICE3/Core/DelphesO2LutWriter.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
#include "iostream"
#include "TMatrixD.h"
#include "TVectorD.h"
#include "TAxis.h"
#include "TMatrixDSymEigen.h"
#include "TDatabasePDG.h"
#include "TLorentzVector.h"
Expand Down Expand Up @@ -55,17 +56,18 @@ bool DelphesO2LutWriter::fatSolve(lutEntry_t& lutEntry,
const float mass,
int itof,
int otof,
int q)
int q,
const float nch)
{
lutEntry.valid = false;

static TLorentzVector tlv;
tlv.SetPtEtaPhiM(pt, eta, 0., mass);
o2::track::TrackParCov trkIn;
o2::upgrade::convertTLorentzVectorToO2Track(q, tlv, {0., 0., 0.}, trkIn);

o2::track::TrackParCov trkOut;
if (fat.FastTrack(trkIn, trkOut, 1) < 0) {
const int status = fat.FastTrack(trkIn, trkOut, nch);
if (status <= 0) {
Printf(" --- fatSolve: FastTrack failed --- \n");
tlv.Print();
return false;
Expand Down Expand Up @@ -234,6 +236,9 @@ void DelphesO2LutWriter::lutWrite(const char* filename, int pdg, float field, in
lutEntry_t lutEntry;

// write entries
int nCalls = 0;
int successfullCalls = 0;
int failedCalls = 0;
for (int inch = 0; inch < nnch; ++inch) {
Printf(" --- writing nch = %d/%d", inch, nnch);
auto nch = lutHeader.nchmap.eval(inch);
Expand All @@ -242,6 +247,7 @@ void DelphesO2LutWriter::lutWrite(const char* filename, int pdg, float field, in
for (int irad = 0; irad < nrad; ++irad) {
Printf(" --- writing irad = %d/%d", irad, nrad);
for (int ieta = 0; ieta < neta; ++ieta) {
nCalls++;
Printf(" --- writing ieta = %d/%d", ieta, neta);
auto eta = lutHeader.etamap.eval(ieta);
lutEntry.eta = lutHeader.etamap.eval(ieta);
Expand All @@ -252,6 +258,7 @@ void DelphesO2LutWriter::lutWrite(const char* filename, int pdg, float field, in
if (std::fabs(eta) <= etaMaxBarrel) { // full lever arm ends at etaMaxBarrel
Printf("Solving in the barrel");
// printf(" --- fatSolve: pt = %f, eta = %f, mass = %f, field=%f \n", lutEntry.pt, lutEntry.eta, lutHeader.mass, lutHeader.field);
successfullCalls++;
if (!fatSolve(lutEntry, lutEntry.pt, lutEntry.eta, lutHeader.mass, itof, otof, q)) {
// printf(" --- fatSolve: error \n");
lutEntry.valid = false;
Expand All @@ -260,13 +267,16 @@ void DelphesO2LutWriter::lutWrite(const char* filename, int pdg, float field, in
for (int i = 0; i < 15; ++i) {
lutEntry.covm[i] = 0.;
}
successfullCalls--;
failedCalls++;
}
} else {
Printf("Solving outside the barrel");
// printf(" --- fwdSolve: pt = %f, eta = %f, mass = %f, field=%f \n", lutEntry.pt, lutEntry.eta, lutHeader.mass, lutHeader.field);
lutEntry.eff = 1.;
lutEntry.eff2 = 1.;
bool retval = true;
successfullCalls++;
if (useFlatDipole) { // Using the parametrization at the border of the barrel
retval = fatSolve(lutEntry, lutEntry.pt, etaMaxBarrel, lutHeader.mass, itof, otof, q);
} else if (usePara) {
Expand All @@ -288,6 +298,8 @@ void DelphesO2LutWriter::lutWrite(const char* filename, int pdg, float field, in
for (int i = 0; i < 15; ++i) {
lutEntry.covm[i] = 0.;
}
successfullCalls--;
failedCalls++;
}
}
Printf("Diagonalizing");
Expand All @@ -298,6 +310,8 @@ void DelphesO2LutWriter::lutWrite(const char* filename, int pdg, float field, in
}
}
}
Printf(" --- finished writing LUT file %s", filename);
Printf(" --- successfull calls: %d/%d, failed calls: %d/%d", successfullCalls, nCalls, failedCalls, nCalls);
lutFile.close();
}

Expand Down Expand Up @@ -331,10 +345,13 @@ void DelphesO2LutWriter::diagonalise(lutEntry_t& lutEntry)

TGraph* DelphesO2LutWriter::lutRead(const char* filename, int pdg, int what, int vs, float nch, float radius, float eta, float pt)
{
Printf(" --- reading LUT file %s", filename);
// vs
static const int kNch = 0;
static const int kEta = 1;
static const int kPt = 2;

// what
static const int kEfficiency = 0;
static const int kEfficiency2 = 1;
static const int kEfficiencyInnerTOF = 2;
Expand All @@ -360,6 +377,58 @@ TGraph* DelphesO2LutWriter::lutRead(const char* filename, int pdg, int what, int
}
auto nbins = lutMap.nbins;
auto g = new TGraph();
g->SetName(Form("lut_%s_%d_vs_%d_what_%d", filename, pdg, vs, what));
g->SetTitle(Form("LUT for %s, pdg %d, vs %d, what %d", filename, pdg, vs, what));
switch (vs) {
case kNch:
Printf(" --- vs = kNch");
g->GetXaxis()->SetTitle("Nch");
break;
case kEta:
Printf(" --- vs = kEta");
g->GetXaxis()->SetTitle("#eta");
break;
case kPt:
Printf(" --- vs = kPt");
g->GetXaxis()->SetTitle("p_{T} (GeV/c)");
break;
default:
Printf(" --- error: unknown vs %d", vs);
return nullptr;
}
switch (what) {
case kEfficiency:
Printf(" --- what = kEfficiency");
g->GetYaxis()->SetTitle("Efficiency (%)");
break;
case kEfficiency2:
Printf(" --- what = kEfficiency2");
g->GetYaxis()->SetTitle("Efficiency2 (%)");
break;
case kEfficiencyInnerTOF:
Printf(" --- what = kEfficiencyInnerTOF");
g->GetYaxis()->SetTitle("Inner TOF Efficiency (%)");
break;
case kEfficiencyOuterTOF:
Printf(" --- what = kEfficiencyOuterTOF");
g->GetYaxis()->SetTitle("Outer TOF Efficiency (%)");
break;
case kPtResolution:
Printf(" --- what = kPtResolution");
g->GetYaxis()->SetTitle("p_{T} Resolution (%)");
break;
case kRPhiResolution:
Printf(" --- what = kRPhiResolution");
g->GetYaxis()->SetTitle("R#phi Resolution (#mum)");
break;
case kZResolution:
Printf(" --- what = kZResolution");
g->GetYaxis()->SetTitle("Z Resolution (#mum)");
break;
default:
Printf(" --- error: unknown what %d", what);
return nullptr;
}

bool canBeInvalid = true;
for (int i = 0; i < nbins; ++i) {
Expand Down
3 changes: 2 additions & 1 deletion ALICE3/Core/DelphesO2LutWriter.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@ class DelphesO2LutWriter
const float mass = 0.13957000,
int itof = 0,
int otof = 0,
int q = 1);
int q = 1,
const float nch = 1);
bool fwdSolve(float* covm, float pt = 0.1, float eta = 0.0, float mass = 0.13957000);
bool fwdPara(lutEntry_t& lutEntry, float pt = 0.1, float eta = 0.0, float mass = 0.13957000, float Bfield = 0.5);
void lutWrite(const char* filename = "lutCovm.dat", int pdg = 211, float field = 0.2, int itof = 0, int otof = 0);
Expand Down
72 changes: 72 additions & 0 deletions ALICE3/Core/DetLayer.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,76 @@
/// \brief Basic struct to hold information regarding a detector layer to be used in fast simulation
///

#include <vector>
#include <string>

#include "DetLayer.h"

namespace o2::fastsim
{

// Parametric constructor
DetLayer::DetLayer(const TString& name_,
float r_,
float z_,
float x0_,
float xrho_,
float resRPhi_,
float resZ_,
float eff_,
int type_)
: name(name_),
r(r_),
z(z_),
x0(x0_),
xrho(xrho_),
resRPhi(resRPhi_),
resZ(resZ_),
eff(eff_),
type(type_)
{
}

DetLayer::DetLayer(const DetLayer& other)
: name(other.name), r(other.r), z(other.z), x0(other.x0), xrho(other.xrho), resRPhi(other.resRPhi), resZ(other.resZ), eff(other.eff), type(other.type)
{
}

std::string DetLayer::toString() const
{
std::string out = "";
out.append("DetLayer: ");
out.append(name.Data());
out.append(" | r: ");
out.append(std::to_string(r));
out.append(" cm | z: ");
out.append(std::to_string(z));
out.append(" cm | x0: ");
out.append(std::to_string(x0));
out.append(" cm | xrho: ");
out.append(std::to_string(xrho));
out.append(" g/cm^3 | resRPhi: ");
out.append(std::to_string(resRPhi));
out.append(" cm | resZ: ");
out.append(std::to_string(resZ));
out.append(" cm | eff: ");
out.append(std::to_string(eff));
out.append(" | type: ");
switch (type) {
case layerInert:
out.append("Inert");
break;
case layerSilicon:
out.append("Silicon");
break;
case layerGas:
out.append("Gas/TPC");
break;
default:
out.append("Unknown");
break;
}
return out;
}

} // namespace o2::fastsim
52 changes: 51 additions & 1 deletion ALICE3/Core/DetLayer.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,59 @@
#ifndef ALICE3_CORE_DETLAYER_H_
#define ALICE3_CORE_DETLAYER_H_

#include <string>

#include "TString.h"

namespace o2::fastsim
{

struct DetLayer {
public:
// Default constructor
DetLayer() = default;
// Parametric constructor
DetLayer(const TString& name_, float r_, float z_, float x0_, float xrho_,
float resRPhi_ = 0.0f, float resZ_ = 0.0f, float eff_ = 0.0f, int type_ = layerInert);
// Copy constructor
DetLayer(const DetLayer& other);

// Setters
void setName(const TString& name_) { name = name_; }
void setRadius(float r_) { r = r_; }
void setZ(float z_) { z = z_; }
void setRadiationLength(float x0_) { x0 = x0_; }
void setDensity(float xrho_) { xrho = xrho_; }
void setResolutionRPhi(float resRPhi_) { resRPhi = resRPhi_; }
void setResolutionZ(float resZ_) { resZ = resZ_; }
void setEfficiency(float eff_) { eff = eff_; }
void setType(int type_) { type = type_; }

// Getters
float getRadius() const { return r; }
float getZ() const { return z; }
float getRadiationLength() const { return x0; }
float getDensity() const { return xrho; }
float getResolutionRPhi() const { return resRPhi; }
float getResolutionZ() const { return resZ; }
float getEfficiency() const { return eff; }
int getType() const { return type; }
const TString& getName() const { return name; }

// Check layer type
bool isInert() const { return type == layerInert; }
bool isSilicon() const { return type == layerSilicon; }
bool isGas() const { return type == layerGas; }

// Utilities
std::string toString() const;
friend std::ostream& operator<<(std::ostream& os, const DetLayer& layer)
{
os << layer.toString();
return os;
}

private:
// TString for holding name
TString name;

Expand All @@ -44,7 +91,10 @@ struct DetLayer {
float eff; // detection efficiency

// layer type
int type; // 0: undefined/inert, 1: silicon, 2: gas/tpc
int type; // 0: undefined/inert, 1: silicon, 2: gas/tpc
static constexpr int layerInert = 0; // inert/undefined layer
static constexpr int layerSilicon = 1; // silicon layer
static constexpr int layerGas = 2; // gas/tpc layer
};

} // namespace o2::fastsim
Expand Down
Loading
Loading