17 #ifndef QC_MODULE_ITS_ITSFHRTASK_H 18 #define QC_MODULE_ITS_ITSFHRTASK_H 21 #include <ITSMFTReconstruction/ChipMappingITS.h> 22 #include <ITSMFTReconstruction/PixelData.h> 23 #include <ITSBase/GeometryTGeo.h> 24 #include <ITSMFTReconstruction/RawPixelDecoder.h> 29 #include <THnSparse.h> 35 using PixelReader = o2::itsmft::PixelReader;
44 using ChipPixelData = o2::itsmft::ChipPixelData;
53 void initialize(o2::framework::InitContext& ctx)
override;
54 void startOfActivity(
Activity& activity)
override;
55 void startOfCycle()
override;
56 void monitorData(o2::framework::ProcessingContext& ctx)
override;
57 void endOfCycle()
override;
58 void endOfActivity(
Activity& activity)
override;
59 void reset()
override;
62 int mAverageProcessTime = 0;
63 void setAxisTitle(TH1*
object,
const char* xTitle,
const char* yTitle);
64 void createGeneralPlots(
int barrel);
65 void createErrorTriggerPlots();
66 void createOccupancyPlots();
67 void setPlotsFormat();
68 void getEnableLayers();
69 void resetGeneralPlots();
70 void resetOccupancyPlots();
72 static constexpr
int NCols = 1024;
73 static constexpr
int NRows = 512;
74 static constexpr
int NLayer = 7;
75 static constexpr
int NLayerIB = 3;
77 const int NSubStave[NLayer] = { 1, 1, 1, 2, 2, 2, 2 };
78 const int NStaves[NLayer] = { 12, 16, 20, 24, 30, 42, 48 };
79 const int nHicPerStave[NLayer] = { 1, 1, 1, 8, 8, 14, 14 };
80 const int nChipsPerHic[NLayer] = { 9, 9, 9, 14, 14, 14, 14 };
82 const int StaveBoundary[NLayer + 1] = { 0, 12, 28, 48, 72, 102, 144, 192 };
83 const int ReduceFraction = 1;
85 std::array<bool, NLayer> mEnableLayers = {
false };
88 std::vector<std::pair<int, int>> mHitPixelID[7][48][14][14];
89 std::unordered_map<unsigned int, int> mHitPixelID_Hash[7][48][2][14][14];
91 std::vector<int> mPixelHitNumber[7][48][14][14];
92 o2::itsmft::RawPixelDecoder<o2::itsmft::ChipMappingITS>* mDecoder;
93 ChipPixelData* mChipDataBuffer =
nullptr;
94 std::vector<ChipPixelData> mChipsBuffer;
95 int mHitNumberOfChip[7][48][2][14][14] = { { { { { 0 } } } } };
97 uint32_t mTriggerTypeCount[13] = { 0 };
101 unsigned int mErrors[19] = { 0 };
102 static constexpr
int NTrigger = 13;
105 TString mTriggerType[NTrigger] = {
"ORBIT",
"HB",
"HBr",
"HC",
"PHYSICS",
"PP",
"CAL",
"SOT",
"EOT",
"SOC",
"EOC",
"TF",
"INT" };
111 TH2I* mTriggerVsFeeid;
114 TH2I* mInfoCanvasComm;
115 TH2I* mInfoCanvasOBComm;
117 TText* mTextForShifter;
118 TText* mTextForShifter2;
121 THnSparseI* mStaveHitmap[7][48];
123 TH2D* mChipStaveOccupancy[7];
124 TH2I* mChipStaveEventHitCheck[7];
125 TH1D* mOccupancyPlot[7];
127 std::string mRunNumberPath;
128 std::string mRunNumber =
"000000";
131 o2::its::GeometryTGeo* mGeom;
135 #endif // QC_MODULE_ITS_ITSFHRTASK_H Definition: ITSClusterTask.h:31
Skeleton of a QC task.
Definition: TaskInterface.h:53
ITS Fake-hit rate real-time data processing task Working with the chain of "Detector -> RU -> CRU -> ...
Definition: ITSFhrTask.h:42
Dummy class that should be removed when there is the official one. This corresponds to a Run1/2 "run"...
Definition: Activity.h:25
These methods can be used to build a complex processing topology. It spawns 3 separate dummy processi...
Definition: Activity.h:19