Skip to content
Merged
Show file tree
Hide file tree
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
41 changes: 21 additions & 20 deletions DataFormats/Detectors/FIT/FT0/include/DataFormatsFT0/RecPoints.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,16 @@ namespace o2
{
namespace ft0
{

struct ChannelDataFloat {

int ChId = -1; //channel Id
int ChainQTC = -1; //QTC chain
double CFDTime = -20000; //time in ps, 0 at the LHC clk center
double QTCAmpl = -20000; // Amplitude mV
float CFDTime = -20000; //time in ps, 0 at the LHC clk center
float QTCAmpl = -20000; // Amplitude mV

ChannelDataFloat() = default;
ChannelDataFloat(int iPmt, double time, double charge, int chainQTC)
ChannelDataFloat(int iPmt, float time, float charge, int chainQTC)
{
ChId = iPmt;
CFDTime = time;
Expand All @@ -62,7 +63,7 @@ class RecPoints
o2::dataformats::RangeReference<int, int> ref;
o2::InteractionRecord mIntRecord; // Interaction record (orbit, bc)
RecPoints() = default;
RecPoints(const std::array<Float_t, 4>& collisiontime,
RecPoints(const std::array<short, 4>& collisiontime,
int first, int ne, o2::InteractionRecord iRec, o2::ft0::Triggers chTrig)
: mCollisionTime(collisiontime)
{
Expand All @@ -75,34 +76,34 @@ class RecPoints

void print() const;

o2::ft0::Triggers mTriggers; // pattern of triggers in this BC

float getCollisionTime(int side) const { return mCollisionTime[side]; }
float getCollisionTimeMean() const { return getCollisionTime(TimeMean); }
float getCollisionTimeA() const { return getCollisionTime(TimeA); }
float getCollisionTimeC() const { return getCollisionTime(TimeC); }
short getCollisionTime(int side) const { return mCollisionTime[side]; }
short getCollisionTimeMean() const { return getCollisionTime(TimeMean); }
short getCollisionTimeA() const { return getCollisionTime(TimeA); }
short getCollisionTimeC() const { return getCollisionTime(TimeC); }
bool isValidTime(int side) const { return getCollisionTime(side) < o2::InteractionRecord::DummyTime; }
void setCollisionTime(Float_t time, int side) { mCollisionTime[side] = time; }
void setCollisionTime(short time, int side) { mCollisionTime[side] = time; }

Float_t getVertex(Float_t vertex) const { return getCollisionTime(Vertex); }
void setVertex(Float_t vertex) { mCollisionTime[Vertex] = vertex; }
short getVertex() const { return getCollisionTime(Vertex); }
void setVertex(short vertex) { mCollisionTime[Vertex] = vertex; }

o2::ft0::Triggers getTrigger() const { return mTriggers; }
void setTriggers(o2::ft0::Triggers trig) { mTriggers = trig; }

o2::InteractionRecord getInteractionRecord() const { return mIntRecord; };

void SetMgrEventTime(Double_t time) { mTimeStamp = time; }
// void SetMgrEventTime(Double_t time) { mTimeStamp = time; }

gsl::span<const ChannelDataFloat> getBunchChannelData(const gsl::span<const ChannelDataFloat> tfdata) const;
short static constexpr sDummyCollissionTime = 32767;

private:
std::array<Float_t, 4> mCollisionTime = {2 * o2::InteractionRecord::DummyTime,
2 * o2::InteractionRecord::DummyTime,
2 * o2::InteractionRecord::DummyTime,
2 * o2::InteractionRecord::DummyTime};
Double_t mTimeStamp = 2 * o2::InteractionRecord::DummyTime; //event time from Fair for continuous
std::array<short, 4> mCollisionTime = {sDummyCollissionTime,
sDummyCollissionTime,
sDummyCollissionTime,
sDummyCollissionTime};
o2::ft0::Triggers mTriggers; // pattern of triggers in this BC

ClassDefNV(RecPoints, 2);
ClassDefNV(RecPoints, 3);
};
} // namespace ft0
} // namespace o2
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class FT0CalibCollectorWriter : public o2::framework::Task
public:
void createAndOpenFileAndTree()
{
TString filename = TString::Format("collFT0_%d.root", mCount);
TString filename = TString::Format("collFT0%d.root", mCount);
LOG(DEBUG) << "opening file " << filename.Data();
mfileOut.reset(TFile::Open(TString::Format("%s", filename.Data()), "RECREATE"));
mOutputTree = std::make_unique<TTree>("treeCollectedCalibInfo", "Tree with FT0 calib info for Time Slewing");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,11 @@ class CollisionTimeRecoTask
gsl::span<o2::ft0::ChannelDataFloat> outChData);
void FinishTask();
void SetChannelOffset(o2::ft0::FT0ChannelTimeCalibrationObject* caliboffsets) { mCalibOffset = caliboffsets; };
void SetSlew(std::array<TGraph, NCHANNELS>* calibslew) { mCalibSlew = calibslew; };
void SetSlew(std::array<TGraph, NCHANNELS>* calibslew)
{
LOG(INFO) << "@@@SetSlew " << calibslew->size();
mCalibSlew = calibslew;
};
int getOffset(int channel, int amp);

private:
Expand Down
16 changes: 5 additions & 11 deletions Detectors/FIT/FT0/reconstruction/src/CollisionTimeRecoTask.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -42,18 +42,14 @@ o2::ft0::RecPoints CollisionTimeRecoTask::process(o2::ft0::Digit const& bcd,

Float_t sideAtime = 0, sideCtime = 0;

// auto timeStamp = o2::InteractionRecord::bc2ns(bcd.mIntRecord.bc, bcd.mIntRecord.orbit);

// LOG(DEBUG) << " event time " << timeStamp << " orbit " << bcd.mIntRecord.orbit << " bc " << bcd.mIntRecord.bc;

int nch = inChData.size();
const auto parInv = DigitizationParameters::Instance().mMV_2_NchannelsInverse;
for (int ich = 0; ich < nch; ich++) {
int offsetChannel = getOffset(ich, inChData[ich].QTCAmpl);

outChData[ich] = o2::ft0::ChannelDataFloat{inChData[ich].ChId,
(inChData[ich].CFDTime - offsetChannel) * Geometry::ChannelWidth,
(double)inChData[ich].QTCAmpl * parInv,
(float)inChData[ich].QTCAmpl * parInv,
inChData[ich].ChainQTC};

// only signals with amplitude participate in collision time
Expand All @@ -67,13 +63,11 @@ o2::ft0::RecPoints CollisionTimeRecoTask::process(o2::ft0::Digit const& bcd,
}
}
}
std::array<Float_t, 4> mCollisionTime = {2 * o2::InteractionRecord::DummyTime,
2 * o2::InteractionRecord::DummyTime,
2 * o2::InteractionRecord::DummyTime,
2 * o2::InteractionRecord::DummyTime};
auto sDummyCollissionTime = o2::ft0::RecPoints::sDummyCollissionTime;
std::array<short, 4> mCollisionTime = {sDummyCollissionTime, sDummyCollissionTime, sDummyCollissionTime, sDummyCollissionTime};
// !!!! tobe done::should be fix with ITS vertex
mCollisionTime[TimeA] = (ndigitsA > 0) ? sideAtime / Float_t(ndigitsA) : 2 * o2::InteractionRecord::DummyTime;
mCollisionTime[TimeC] = (ndigitsC > 0) ? sideCtime / Float_t(ndigitsC) : 2 * o2::InteractionRecord::DummyTime;
mCollisionTime[TimeA] = (ndigitsA > 0) ? sideAtime / ndigitsA : sDummyCollissionTime; // 2 * o2::InteractionRecord::DummyTime;
mCollisionTime[TimeC] = (ndigitsC > 0) ? sideCtime / ndigitsC : sDummyCollissionTime; //2 * o2::InteractionRecord::DummyTime;

if (ndigitsA > 0 && ndigitsC > 0) {
mCollisionTime[Vertex] = (mCollisionTime[TimeA] - mCollisionTime[TimeC]) / 2.;
Expand Down