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
2225namespace o2
2326{
@@ -27,12 +30,16 @@ namespace calibration::trd
2730class 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
6679namespace 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
0 commit comments