-
Notifications
You must be signed in to change notification settings - Fork 494
Expand file tree
/
Copy pathUtils.h
More file actions
108 lines (92 loc) · 3.62 KB
/
Utils.h
File metadata and controls
108 lines (92 loc) · 3.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
// All rights not expressly granted are reserved.
//
// This software is distributed under the terms of the GNU General Public
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
//
// In applying this license CERN does not waive the privileges and immunities
// granted to it by virtue of its status as an Intergovernmental Organization
// or submit itself to any jurisdiction.
#ifndef ALICEO2_TOF_UTILS_H_
#define ALICEO2_TOF_UTILS_H_
#include <iosfwd>
#include "Rtypes.h"
#include "TOFBase/Geo.h"
#include "TOFBase/EventTimeMaker.h"
#include "DataFormatsTOF/CalibInfoTOF.h"
#include "DataFormatsTOF/CalibTimeSlewingParamTOF.h"
#include <vector>
#include <TF1.h>
#include <TChain.h>
#include <TH2F.h>
namespace o2
{
namespace tof
{
/// \class Utils
/// \brief TOF utils
template <typename trackType>
bool filterCalib(const o2::dataformats::CalibInfoTOF& tr)
{
return true;
} // accept all
class Utils
{
public:
Utils() = default;
static bool hasFillScheme();
static int getNinteractionBC();
static void addBC(float toftime, bool subLatency = false);
static void addBC(double toftime, bool subLatency = false) { addBC(float(toftime), subLatency); }
static void addInteractionBC(int bc, bool fromCollisonCotext = false);
static int getInteractionBC(int ibc) { return mFillScheme[ibc]; }
static double subtractInteractionBC(double time, int& mask, bool subLatency = false);
static float subtractInteractionBC(float time, int& mask, bool subLatency = false);
static void init();
static void printFillScheme();
static void addCalibTrack(float time);
static void computeLHCphase();
// info can be tuned
static float mEventTimeSpread;
static float mEtaMin;
static float mEtaMax;
static float mLHCPhase;
static int addMaskBC(int mask, int channel);
static int getMaxUsed();
static int getMaxUsedChannel(int channel);
static int extractNewTimeSlewing(const dataformats::CalibTimeSlewingParamTOF* oldTS, dataformats::CalibTimeSlewingParamTOF* newTS);
static void fitTimeSlewing(int sector, const dataformats::CalibTimeSlewingParamTOF* oldTS, dataformats::CalibTimeSlewingParamTOF* newTS);
static void fitChannelsTS(int chStart, const dataformats::CalibTimeSlewingParamTOF* oldTS, dataformats::CalibTimeSlewingParamTOF* newTS);
static int fitSingleChannel(int ch, TH2F* h, const dataformats::CalibTimeSlewingParamTOF* oldTS, dataformats::CalibTimeSlewingParamTOF* newTS);
static uint32_t getNOrbitInTF() { return mNOrbitInTF; }
static void setNOrbitInTF(uint32_t norb) { mNOrbitInTF = norb; }
private:
static std::vector<int> mFillScheme;
static int mBCmult[o2::constants::lhc::LHCMaxBunches];
static int mNautodet;
static int mMaxBC;
static bool mIsInit;
// for LHCphase from calib infos
static constexpr int NTRACKS_REQUESTED = 1000;
static int mNCalibTracks;
static o2::dataformats::CalibInfoTOF mCalibTracks[NTRACKS_REQUESTED];
static int mNsample;
static int mIsample;
static float mPhases[100];
static uint64_t mMaskBC[16];
static uint64_t mMaskBCUsed[16];
static int mMaskBCchan[o2::tof::Geo::NCHANNELS][16];
static int mMaskBCchanUsed[o2::tof::Geo::NCHANNELS][16];
static TChain* mTreeFit;
static std::vector<dataformats::CalibInfoTOF> mVectC;
static std::vector<dataformats::CalibInfoTOF>* mPvectC;
static const int NCHPERBUNCH = Geo::NCHANNELS / Geo::NSECTORS / 16;
static const int NMINTOFIT = 300;
static int mNfits;
static uint32_t mNOrbitInTF;
ClassDefNV(Utils, 1);
};
} // namespace tof
} // namespace o2
#endif