@@ -40,6 +40,21 @@ RawTask::~RawTask()
4040 if (mPayloadSizePerDDL ) {
4141 delete mPayloadSizePerDDL ;
4242 }
43+ if (mMessageCounter ) {
44+ delete mMessageCounter ;
45+ }
46+ if (mPageCounter ) {
47+ delete mPageCounter ;
48+ }
49+ if (mSuperpageCounter ) {
50+ delete mSuperpageCounter ;
51+ }
52+ if (mNumberOfPagesPerMessage ) {
53+ delete mNumberOfPagesPerMessage ;
54+ }
55+ if (mNumberOfSuperpagesPerMessage ) {
56+ delete mNumberOfSuperpagesPerMessage ;
57+ }
4358 if (mErrorTypeAltro ) {
4459 delete mErrorTypeAltro ;
4560 }
@@ -81,6 +96,38 @@ void RawTask::initialize(o2::framework::InitContext& /*ctx*/)
8196
8297 mMappings = std::unique_ptr<o2::emcal::MappingHandler>(new o2::emcal::MappingHandler); // initialize the unique pointer to Mapper
8398
99+ // Statistics histograms
100+ mMessageCounter = new TH1F (" NumberOfMessages" , " Number of messages in time interval" , 1 , 0.5 , 1.5 );
101+ mMessageCounter ->GetXaxis ()->SetTitle (" MonitorData" );
102+ mMessageCounter ->GetYaxis ()->SetTitle (" Number of messages" );
103+ getObjectsManager ()->startPublishing (mMessageCounter );
104+
105+ mSuperpageCounter = new TH1F (" NumberOfSuperpages" , " Number of superpages in time interval" , 1 , 0.5 , 1.5 );
106+ mSuperpageCounter ->GetXaxis ()->SetTitle (" MonitorData" );
107+ mSuperpageCounter ->GetYaxis ()->SetTitle (" Number of superpages" );
108+ getObjectsManager ()->startPublishing (mSuperpageCounter );
109+
110+ mPageCounter = new TH1F (" NumberOfPages" , " Number of pages in time interval" , 1 , 0.5 , 1.5 );
111+ mPageCounter ->GetXaxis ()->SetTitle (" MonitorData" );
112+ mPageCounter ->GetYaxis ()->SetTitle (" Number of pages" );
113+ getObjectsManager ()->startPublishing (mPageCounter );
114+
115+ mNumberOfSuperpagesPerMessage = new TH1F (" NumberOfSuperpagesPerMessage" , " Number of superpages per message" , 40 ., 0 ., 40 .);
116+ mNumberOfSuperpagesPerMessage ->GetXaxis ()->SetTitle (" Number of superpages" );
117+ mNumberOfSuperpagesPerMessage ->GetYaxis ()->SetTitle (" Number of messages" );
118+ getObjectsManager ()->startPublishing (mNumberOfSuperpagesPerMessage );
119+
120+ mNumberOfPagesPerMessage = new TH1F (" NumberOfPagesPerMessage" , " Number of pages per message" , 400 , 0 ., 400 .);
121+ mNumberOfPagesPerMessage ->GetXaxis ()->SetTitle (" Number of pages" );
122+ mNumberOfPagesPerMessage ->GetYaxis ()->SetTitle (" Number of messages" );
123+ getObjectsManager ()->startPublishing (mNumberOfPagesPerMessage );
124+
125+ mTotalDataVolume = new TH1D (" TotalDataVolume" , " Total data volume" , 1 , 0.5 , 1.5 );
126+ mTotalDataVolume ->GetXaxis ()->SetTitle (" MonitorData" );
127+ mTotalDataVolume ->GetYaxis ()->SetTitle (" Total data volume (Byte)" );
128+ getObjectsManager ()->startPublishing (mTotalDataVolume );
129+
130+ // EMCAL related histograms
84131 mPayloadSizePerDDL = new TH2F (" PayloadSizePerDDL" , " PayloadSizePerDDL" , 40 , 0 , 40 , 100 , 0 , 1 );
85132 mPayloadSizePerDDL ->GetXaxis ()->SetTitle (" ddl" );
86133 mPayloadSizePerDDL ->GetYaxis ()->SetTitle (" PayloadSize" );
@@ -156,6 +203,12 @@ void RawTask::monitorData(o2::framework::ProcessingContext& ctx)
156203 // https://github.com/AliceO2Group/AliceO2/blob/dev/Framework/Core/README.md#using-inputs---the-inputrecord-api
157204
158205 using CHTYP = o2::emcal::ChannelType_t;
206+
207+ Int_t nPagesMessage = 0 , nSuperpagesMessage = 0 ;
208+ QcInfoLogger::GetInstance () << QcInfoLogger::Debug << " Processing message " << mNumberOfMessages << AliceO2::InfoLogger::InfoLogger::endm;
209+ mNumberOfMessages ++;
210+ mMessageCounter ->Fill (1 );
211+
159212 // Some examples:
160213 // 1. In a loop
161214 for (auto && input : ctx.inputs ()) {
@@ -164,10 +217,15 @@ void RawTask::monitorData(o2::framework::ProcessingContext& ctx)
164217 const auto * header = header::get<header::DataHeader*>(input.header );
165218 // get payload of a specific input, which is a char array.
166219 // const char* payload = input.payload;
220+ QcInfoLogger::GetInstance () << QcInfoLogger::Debug << " Processing superpage " << mNumberOfSuperpages << AliceO2::InfoLogger::InfoLogger::endm;
221+ mNumberOfSuperpages ++;
222+ nSuperpagesMessage++;
223+ mSuperpageCounter ->Fill (1 );
167224 QcInfoLogger::GetInstance () << QcInfoLogger::Debug << " EMCAL Reading Payload size: " << header->payloadSize << " for " << header->dataOrigin << AliceO2::InfoLogger::InfoLogger::endm;
168225
169226 // fill the histogram with payload sizes
170227 mHistogram ->Fill (header->payloadSize );
228+ mTotalDataVolume ->Fill (1 ., header->payloadSize );
171229
172230 // try decoding payload
173231 o2::emcal::RawReaderMemory<o2::header::RAWDataHeaderV4> rawreader (gsl::span (input.payload , header->payloadSize ));
@@ -176,6 +234,10 @@ void RawTask::monitorData(o2::framework::ProcessingContext& ctx)
176234 short int maxADCSM[20 ];
177235 short int minADCSM[20 ];
178236 while (rawreader.hasNext ()) {
237+ QcInfoLogger::GetInstance () << QcInfoLogger::Debug << " Processing page " << mNumberOfPages << AliceO2::InfoLogger::InfoLogger::endm;
238+ mNumberOfPages ++;
239+ nPagesMessage++;
240+ mPageCounter ->Fill (1 );
179241 rawreader.next ();
180242 auto payLoadSize = rawreader.getPayloadSize (); // payloadsize in byte;
181243
@@ -295,6 +357,8 @@ void RawTask::monitorData(o2::framework::ProcessingContext& ctx)
295357 } // new page
296358 } // header
297359 } // inputs
360+ mNumberOfPagesPerMessage ->Fill (nPagesMessage);
361+ mNumberOfSuperpagesPerMessage ->Fill (nSuperpagesMessage);
298362} // function monitor data
299363
300364void RawTask::endOfCycle ()
@@ -305,6 +369,8 @@ void RawTask::endOfCycle()
305369void RawTask::endOfActivity (Activity& /* activity*/ )
306370{
307371 QcInfoLogger::GetInstance () << " endOfActivity" << AliceO2::InfoLogger::InfoLogger::endm;
372+ QcInfoLogger::GetInstance () << " Total amount of messages: " << mNumberOfMessages << AliceO2::InfoLogger::InfoLogger::endm;
373+ QcInfoLogger::GetInstance () << " Total amount of superpages: " << mNumberOfSuperpages << " , pages: " << mNumberOfPages << AliceO2::InfoLogger::InfoLogger::endm;
308374}
309375
310376void RawTask::reset ()
0 commit comments