Skip to content

Commit 2edb4f3

Browse files
committed
AOD: Add trd tracklet streamer
Signed-off-by: Felix Schlepper <felix.schlepper@cern.ch>
1 parent 5942c9b commit 2edb4f3

File tree

2 files changed

+33
-53
lines changed

2 files changed

+33
-53
lines changed

Detectors/AOD/include/AODProducerWorkflow/AODProducerWorkflowSpec.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include "DataFormatsPHOS/Cell.h"
2121
#include "DataFormatsTRD/TrackTRD.h"
2222
#include "TRDBase/PadCalibrationsAliases.h"
23+
#include "TRDBase/TrackletTransformer.h"
2324
#include "DataFormatsTRD/NoiseCalibration.h"
2425
#include "DetectorsBase/GRPGeomHelper.h"
2526
#include "DetectorsBase/Propagator.h"
@@ -250,6 +251,7 @@ class AODProducerWorkflowDPL : public Task
250251

251252
const o2::trd::LocalGainFactor* mTRDLocalGain; // TRD local gain factors from krypton calibration
252253
const o2::trd::NoiseStatusMCM* mTRDNoiseMap; // TRD noise map
254+
std::unique_ptr<o2::trd::TrackletTransformer> mTRDTransformer;
253255

254256
std::unordered_set<GIndex> mGIDUsedBySVtx;
255257
std::unordered_set<GIndex> mGIDUsedByStr;

Detectors/AOD/src/AODProducerWorkflowSpec.cxx

Lines changed: 31 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,9 @@ void AODProducerWorkflowDPL::addToTRDsExtra(const o2::globaltracking::RecoContai
396396
int q0s[NLAYERS] = {-1}, q1s[NLAYERS] = {-1}, q2s[NLAYERS] = {-1};
397397
float q0sCor[NLAYERS] = {-1}, q1sCor[NLAYERS] = {-1}, q2sCor[NLAYERS] = {-1};
398398
float ttgls[NLAYERS] = {-999}, tphis[NLAYERS] = {-999};
399-
o2::trd::Tracklet64 trkletsa[NLAYERS];
399+
std::vector<o2::trd::Tracklet64> trkletsa(NLAYERS);
400+
std::vector<o2::trd::CalibratedTracklet> ctrkletsa(NLAYERS);
401+
std::vector<o2::trd::CalibratedTracklet> cloctrkletsa(NLAYERS);
400402

401403
auto contributorsGID = recoData.getSingleDetectorRefs(trkIdx);
402404
if (!contributorsGID[GIndex::Source::TRD].isIndexSet()) { // should be redunant
@@ -418,6 +420,8 @@ void AODProducerWorkflowDPL::addToTRDsExtra(const o2::globaltracking::RecoContai
418420
continue;
419421
}
420422
trkletsa[iLay] = tracklet;
423+
ctrkletsa[iLay] = ctrklets[trkltId];
424+
cloctrkletsa[iLay] = mTRDTransformer->transformTracklet(tracklet, false);
421425
// we need to propagate into TRD local system
422426
int trkltDet = tracklet.getDetector();
423427
int trkltSec = trkltDet / 30;
@@ -433,16 +437,14 @@ void AODProducerWorkflowDPL::addToTRDsExtra(const o2::globaltracking::RecoContai
433437
auto tphi = trkC.getSnp() / std::sqrt((1.f - trkC.getSnp()) * (1.f + trkC.getSnp()));
434438
auto trackletLength = std::sqrt(1.f + tphi * tphi + trkC.getTgl() * trkC.getTgl());
435439
float cor = mTRDLocalGain->getValue(tracklet.getHCID() / 2, tracklet.getPadCol(), tracklet.getPadRow()) * trackletLength;
436-
if (mEnableTRDextra) {
437-
q0s[iLay] = tracklet.getQ0();
438-
q1s[iLay] = tracklet.getQ1();
439-
q2s[iLay] = tracklet.getQ2();
440-
q0sCor[iLay] = (float)tracklet.getQ0() / cor;
441-
q1sCor[iLay] = (float)tracklet.getQ1() / cor;
442-
q2sCor[iLay] = (float)tracklet.getQ2() / cor;
443-
ttgls[iLay] = trkC.getTgl();
444-
tphis[iLay] = tphi;
445-
}
440+
q0s[iLay] = tracklet.getQ0();
441+
q1s[iLay] = tracklet.getQ1();
442+
q2s[iLay] = tracklet.getQ2();
443+
q0sCor[iLay] = (float)tracklet.getQ0() / cor;
444+
q1sCor[iLay] = (float)tracklet.getQ1() / cor;
445+
q2sCor[iLay] = (float)tracklet.getQ2() / cor;
446+
ttgls[iLay] = trkC.getTgl();
447+
tphis[iLay] = tphi;
446448

447449
dEdx += (float)tracklet.getQTot() / cor;
448450
}
@@ -462,49 +464,16 @@ void AODProducerWorkflowDPL::addToTRDsExtra(const o2::globaltracking::RecoContai
462464
(*mStreamer) << "trdExtra"
463465
<< "dEdx=" << dEdx
464466
<< "eProb=" << trk.getSignal()
465-
<< "q00=" << q0s[0]
466-
<< "q01=" << q0s[1]
467-
<< "q02=" << q0s[2]
468-
<< "q03=" << q0s[3]
469-
<< "q04=" << q0s[4]
470-
<< "q05=" << q0s[5]
471-
<< "q10=" << q1s[0]
472-
<< "q11=" << q1s[1]
473-
<< "q12=" << q1s[2]
474-
<< "q13=" << q1s[3]
475-
<< "q14=" << q1s[4]
476-
<< "q15=" << q1s[5]
477-
<< "q20=" << q2s[0]
478-
<< "q21=" << q2s[1]
479-
<< "q22=" << q2s[2]
480-
<< "q23=" << q2s[3]
481-
<< "q24=" << q2s[4]
482-
<< "q25=" << q2s[5]
483-
<< "q00Cor=" << q0sCor[0]
484-
<< "q01Cor=" << q0sCor[1]
485-
<< "q02Cor=" << q0sCor[2]
486-
<< "q03Cor=" << q0sCor[3]
487-
<< "q04Cor=" << q0sCor[4]
488-
<< "q05Cor=" << q0sCor[5]
489-
<< "q10Cor=" << q1sCor[0]
490-
<< "q11Cor=" << q1sCor[1]
491-
<< "q12Cor=" << q1sCor[2]
492-
<< "q13Cor=" << q1sCor[3]
493-
<< "q14Cor=" << q1sCor[4]
494-
<< "q15Cor=" << q1sCor[5]
495-
<< "q20Cor=" << q2sCor[0]
496-
<< "q21Cor=" << q2sCor[1]
497-
<< "q22Cor=" << q2sCor[2]
498-
<< "q23Cor=" << q2sCor[3]
499-
<< "q24Cor=" << q2sCor[4]
500-
<< "q25Cor=" << q2sCor[5]
467+
<< "q0s[6]=" << q0s
468+
<< "q1s[6]=" << q1s
469+
<< "q2s[6]=" << q2s
470+
<< "q0sCor[6]=" << q0sCor
471+
<< "q1sCor[6]=" << q1sCor
472+
<< "q2sCor[6]=" << q2sCor
501473
<< "pattern=" << getTRDPattern(trk)
502-
<< "tracklet0=" << trkletsa[0]
503-
<< "tracklet1=" << trkletsa[1]
504-
<< "tracklet2=" << trkletsa[2]
505-
<< "tracklet3=" << trkletsa[3]
506-
<< "tracklet4=" << trkletsa[4]
507-
<< "tracklet5=" << trkletsa[5]
474+
<< "tracklets=" << trkletsa
475+
<< "ctracklets=" << ctrkletsa
476+
<< "cloctracklets=" << cloctrkletsa
508477
<< "tpctrk=" << tpctrk
509478
<< "trdtrk=" << trk
510479
<< "globaltrk=" << recoData.getTrack<o2::track::TrackParCov>(trkIdx)
@@ -3036,6 +3005,9 @@ void AODProducerWorkflowDPL::updateTimeDependentParams(ProcessingContext& pc)
30363005
if (mEnableTRDextra) {
30373006
mTRDLocalGain = pc.inputs().get<o2::trd::LocalGainFactor*>("trdlocalgainfactors").get();
30383007
mTRDNoiseMap = pc.inputs().get<o2::trd::NoiseStatusMCM*>("trdnoisemap").get();
3008+
mTRDTransformer = std::make_unique<o2::trd::TrackletTransformer>();
3009+
mTRDTransformer->init();
3010+
pc.inputs().get<o2::trd::CalVdriftExB*>("calvdexb");
30393011
}
30403012
}
30413013
if (mPropTracks) {
@@ -3070,6 +3042,11 @@ void AODProducerWorkflowDPL::finaliseCCDB(ConcreteDataMatcher& matcher, void* ob
30703042
mVtx = *(const o2::dataformats::MeanVertexObject*)obj;
30713043
return;
30723044
}
3045+
if (matcher == ConcreteDataMatcher("TRD", "CALVDRIFTEXB", 0)) {
3046+
LOG(info) << "TRD CalVdriftExB object has been updated";
3047+
mTRDTransformer->setCalVdriftExB((const o2::trd::CalVdriftExB*)obj);
3048+
return;
3049+
}
30733050
if (matcher == ConcreteDataMatcher("CTP", "CTPCONFIG", 0)) {
30743051
// construct mask with EMCAL trigger classes for rejection of incomplete triggers
30753052
auto ctpconfig = *(const o2::ctp::CTPConfiguration*)obj;
@@ -3348,6 +3325,7 @@ DataProcessorSpec getAODProducerWorkflowSpec(GID::mask_t src, bool enableSV, boo
33483325
outputs.push_back(OutputForTable<TRDsExtra>::spec());
33493326
dataRequest->inputs.emplace_back("trdlocalgainfactors", "TRD", "LOCALGAINFACTORS", 0, Lifetime::Condition, ccdbParamSpec("TRD/Calib/LocalGainFactor"));
33503327
dataRequest->inputs.emplace_back("trdnoisemap", "TRD", "NOISEMAP", 0, Lifetime::Condition, ccdbParamSpec("TRD/Calib/NoiseMapMCM"));
3328+
dataRequest->inputs.emplace_back("calvdexb", "TRD", "CALVDRIFTEXB", 0, Lifetime::Condition, ccdbParamSpec("TRD/Calib/CalVdriftExB"));
33513329
}
33523330
if (useMC) {
33533331
outputs.insert(outputs.end(),

0 commit comments

Comments
 (0)