Skip to content

Commit 571df2f

Browse files
committed
lasdlfd
1 parent 247dac7 commit 571df2f

File tree

4 files changed

+67
-18
lines changed

4 files changed

+67
-18
lines changed

Detectors/TRD/calibration/include/TRDCalibration/CalibratorPID.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,11 @@
1111
#ifndef O2_TRD_CALIBRATORPID_H
1212
#define O2_TRD_CALIBRATORPID_H
1313

14+
#include <memory>
15+
1416
#include "DataFormatsGlobalTracking/RecoContainer.h"
1517
#include "ReconstructionDataFormats/GlobalTrackID.h"
18+
#include "CommonUtils/TreeStreamRedirector.h"
1619

1720
#include "Rtypes.h"
1821

@@ -22,13 +25,14 @@ namespace o2::trd
2225
class CalibratorPID
2326
{
2427
public:
25-
CalibratorPID(o2::dataformats::GlobalTrackID::mask_t trcSrc, bool withSV) : mTracksSrc(trcSrc), mWithSV(withSV) {}
28+
CalibratorPID(o2::dataformats::GlobalTrackID::mask_t trcSrc) : mTracksSrc(trcSrc) {}
2629

2730
void run(const o2::globaltracking::RecoContainer& input);
31+
void setTree(std::shared_ptr<o2::utils::TreeStreamRedirector> tree) { mTree = tree; }
2832

2933
private:
3034
o2::dataformats::GlobalTrackID::mask_t mTracksSrc{};
31-
bool mWithSV{false};
35+
std::shared_ptr<o2::utils::TreeStreamRedirector> mTree;
3236

3337
ClassDefNV(CalibratorPID, 1);
3438
};

Detectors/TRD/calibration/src/CalibratorPID.cxx

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,46 @@
1010
// or submit itself to any jurisdiction.
1111

1212
#include "TRDCalibration/CalibratorPID.h"
13+
#include "ReconstructionDataFormats/DecayNBodyIndex.h"
14+
#include "DataFormatsTRD/TrackTRD.h"
15+
#include "Framework/Logger.h"
1316

1417
namespace o2::trd
1518
{
1619

17-
void CalibratorPID::run(const o2::globaltracking::RecoContainer& input) {}
20+
void CalibratorPID::run(const o2::globaltracking::RecoContainer& reco)
21+
{
22+
const auto& v0sIdx = reco.getV0sIdx();
23+
for (const auto& v0Idx : v0sIdx) {
24+
const auto prongs{v0Idx.getProngs()};
25+
if (!reco.isTrackSourceLoaded(prongs[0].getSource()) || !reco.isTrackSourceLoaded(prongs[1].getSource())) {
26+
continue;
27+
}
28+
auto seedP = reco.getTrackParam(prongs[0]);
29+
auto seedN = reco.getTrackParam(prongs[1]);
30+
if (!mFitterV0.process(seedP, seedN) && !mFitterV0.isPropagateTracksToVertexDone() && !mFitterV0.propagateTracksToVertex()) {
31+
continue;
32+
}
33+
const auto& trPProp = mFitterV0.getTrack(0);
34+
const auto& trNProp = mFitterV0.getTrack(1);
35+
std::array<float, 3> pP{}, pN{};
36+
trPProp.getPxPyPzGlo(pP);
37+
trNProp.getPxPyPzGlo(pN);
38+
std::array<float, 3> pV0a = {pP[0] + pN[0], pP[1] + pN[1], pP[2] + pN[2]};
39+
float p2V0 = pV0a[0] * pV0a[0] + pV0a[1] * pV0a[1] + pV0a[2] * pV0a[2], pV0Abs = std::sqrt(p2V0);
40+
float p2Pos = pP[0] * pP[0] + pP[1] * pP[1] + pP[2] * pP[2], p2Neg = pN[0] * pN[0] + pN[1] * pN[1] + pN[2] * pN[2];
41+
float pPos = std::sqrt(p2Pos), pNeg = std::sqrt(p2Neg);
42+
float pL1 = (pV0a[0] * pP[0] + pV0a[1] * pP[1] + pV0a[2] * pP[2]) / pV0Abs;
43+
float dp = (pV0a[0] * pN[0] + pV0a[1] * pN[1] + pV0a[2] * pN[2]);
44+
float pL2 = dp / pV0Abs;
45+
float alpha = (pL1 - pL2) / (pL1 + pL2);
46+
float qt = std::sqrt((p2Neg - dp * dp) / p2V0);
47+
48+
(*mTree) << "ap"
49+
<< "alpha=" << alpha
50+
<< "qt=" << qt
51+
<< "\n";
52+
}
53+
}
1854

1955
} // namespace o2::trd

Detectors/TRD/workflow/include/TRDWorkflow/PIDCalibSpec.h

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,15 @@
1212
#ifndef O2_TRD_PIDCALIBSPEC_H
1313
#define O2_TRD_PIDCALIBSPEC_H
1414

15+
#include <memory>
16+
1517
#include "Framework/Task.h"
1618
#include "Framework/DataProcessorSpec.h"
1719
#include "DetectorsBase/GRPGeomHelper.h"
1820
#include "ReconstructionDataFormats/GlobalTrackID.h"
1921
#include "DataFormatsGlobalTracking/RecoContainer.h"
2022
#include "TRDCalibration/CalibratorPID.h"
23+
#include "CommonUtils/TreeStreamRedirector.h"
2124

2225
namespace o2
2326
{
@@ -27,12 +30,16 @@ namespace calibration::trd
2730
class PIDCalibDevice final : public o2::framework::Task
2831
{
2932
public:
30-
PIDCalibDevice(std::shared_ptr<o2::globaltracking::DataRequest> dr, std::shared_ptr<o2::base::GRPGeomRequest> gr, o2::dataformats::GlobalTrackID::mask_t src, bool withSV)
31-
: mDataRequest(dr), mGGCCDBRequest(gr), mTracksSrc(src), mWithSV(withSV), mCalibrator(src, withSV) {}
33+
PIDCalibDevice(std::shared_ptr<o2::globaltracking::DataRequest> dr, std::shared_ptr<o2::base::GRPGeomRequest> gr, o2::dataformats::GlobalTrackID::mask_t src)
34+
: mDataRequest(dr), mGGCCDBRequest(gr), mTracksSrc(src), mCalibrator(src) {}
3235

3336
void init(o2::framework::InitContext& ic) final
3437
{
3538
o2::base::GRPGeomHelper::instance().setRequest(mGGCCDBRequest);
39+
40+
mTree = std::make_shared<o2::utils::TreeStreamRedirector>("trd_pid_calib.root");
41+
mTree->SetMaxFileSize(ic.options().get<uint64_t>("max-file-size"));
42+
mCalibrator.setTree(mTree);
3643
}
3744

3845
void run(o2::framework::ProcessingContext& pc) final
@@ -43,6 +50,11 @@ class PIDCalibDevice final : public o2::framework::Task
4350
mCalibrator.run(recoData);
4451
}
4552

53+
void endOfStream(o2::framework::EndOfStreamContext& ec) final
54+
{
55+
mTree->Close();
56+
}
57+
4658
void finaliseCCDB(o2::framework::ConcreteDataMatcher& matcher, void* obj) final
4759
{
4860
o2::base::GRPGeomHelper::instance().finaliseCCDB(matcher, obj);
@@ -54,6 +66,7 @@ class PIDCalibDevice final : public o2::framework::Task
5466
o2::dataformats::GlobalTrackID::mask_t mTracksSrc{};
5567
bool mWithSV{false};
5668
o2::trd::CalibratorPID mCalibrator;
69+
std::shared_ptr<o2::utils::TreeStreamRedirector> mTree;
5770

5871
void updateTimeDependentParams(o2::framework::ProcessingContext& pc)
5972
{
@@ -66,14 +79,12 @@ class PIDCalibDevice final : public o2::framework::Task
6679
namespace framework
6780
{
6881

69-
DataProcessorSpec getTRDPIDCalibSpec(o2::dataformats::GlobalTrackID::mask_t srcTracks, bool withSV, bool useMC)
82+
DataProcessorSpec getTRDPIDCalibSpec(o2::dataformats::GlobalTrackID::mask_t srcTracks, bool useMC)
7083
{
7184
std::vector<OutputSpec> outputs;
7285
auto dataRequest = std::make_shared<o2::globaltracking::DataRequest>();
7386
dataRequest->requestTracks(srcTracks, useMC);
74-
if (withSV) {
75-
dataRequest->requestSecondaryVertices(useMC);
76-
}
87+
dataRequest->requestSecondaryVertices(useMC);
7788
dataRequest->requestClusters(o2::dataformats::GlobalTrackID::getSourcesMask("TRD"), useMC);
7889

7990
auto ggRequest = std::make_shared<o2::base::GRPGeomRequest>(false, // orbitResetTime
@@ -88,8 +99,10 @@ DataProcessorSpec getTRDPIDCalibSpec(o2::dataformats::GlobalTrackID::mask_t srcT
8899
return DataProcessorSpec{
89100
"pid-calibration",
90101
dataRequest->inputs, outputs,
91-
AlgorithmSpec{adaptFromTask<o2::calibration::trd::PIDCalibDevice>(dataRequest, ggRequest, srcTracks, withSV)},
92-
Options{}};
102+
AlgorithmSpec{adaptFromTask<o2::calibration::trd::PIDCalibDevice>(dataRequest, ggRequest, srcTracks)},
103+
Options{
104+
{"max-file-size", o2::framework::VariantType::UInt64, 0ULL, {"Set max size of output file"}},
105+
}};
93106
}
94107
} // namespace framework
95108
} // namespace o2

Detectors/TRD/workflow/src/trd-calib-workflow.cxx

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,9 @@ void customize(std::vector<o2::framework::ConfigParamSpec>& workflowOptions)
4141
{"t0", o2::framework::VariantType::Bool, false, {"enable t0 fit"}},
4242
{"pid", o2::framework::VariantType::Bool, false, {"enable pid calibration"}},
4343
{"track-sources", VariantType::String, std::string{GID::ALL}, {"comma-separated list of track sources to use"}},
44-
{"with-sv", o2::framework::VariantType::Bool, false, {"request secondary-vertices"}},
4544
{"calib-dds-collection-index", VariantType::Int, -1, {"allow only single collection to produce calibration objects (use -1 for no limit)"}},
4645
{"configKeyValues", VariantType::String, "", {"Semicolon separated key=value strings"}}};
47-
o2::raw::HBFUtilsInitializer::addConfigOption(options);
46+
o2::raw::HBFUtilsInitializer::addConfigOption(options, "none");
4847
std::swap(workflowOptions, options);
4948
}
5049

@@ -104,11 +103,8 @@ WorkflowSpec defineDataProcessing(ConfigContext const& configcontext)
104103
auto srcTrc = allowedTrkSources & GID::getSourcesMask(configcontext.options().get<std::string>("track-sources"));
105104
auto srcClu = GID::getSourcesMask("TRD");
106105
o2::globaltracking::InputHelper::addInputSpecs(configcontext, specs, srcClu, srcTrc, srcTrc, useMC);
107-
auto withSV = configcontext.options().get<bool>("with-sv");
108-
if (withSV) {
109-
o2::globaltracking::InputHelper::addInputSpecsSVertex(configcontext, specs);
110-
}
111-
specs.emplace_back(getTRDPIDCalibSpec(srcTrc, withSV, useMC));
106+
o2::globaltracking::InputHelper::addInputSpecsSVertex(configcontext, specs);
107+
specs.emplace_back(getTRDPIDCalibSpec(srcTrc, useMC));
112108
o2::raw::HBFUtilsInitializer hbfIni(configcontext, specs);
113109
}
114110

0 commit comments

Comments
 (0)