1414#include < map>
1515#include < memory>
1616#include < vector>
17+ #include < string>
1718
19+ #include " CCDB/BasicCCDBManager.h"
1820#include " Common/DataModel/EventSelection.h"
1921#include " DataFormatsPHOS/Cell.h"
22+ #include " DataFormatsPHOS/CalibParams.h"
2023#include " Framework/ConfigParamSpec.h"
2124#include " Framework/runDataProcessing.h"
2225#include " Framework/AnalysisTask.h"
@@ -43,13 +46,17 @@ using namespace o2::framework;
4346using namespace o2 ::framework::expressions;
4447
4548struct phosCellQA {
46- ConfigurableAxis amplitudeAxisLarge{" amplitude" , {1000 , 0 ., 100 .}, " Amplutude (GeV)" };
49+
50+ Service<o2::ccdb::BasicCCDBManager> ccdb;
51+
52+ ConfigurableAxis amplitudeAxisLarge{" amplitude" , {1000 , 0 ., 10 .}, " Amplutude (GeV)" };
4753 ConfigurableAxis timeAxisLarge{" celltime" , {1000 , -1500 .e -9 , 3500 .e -9 }, " cell time (ns)" };
4854 Configurable<int > mEvSelTrig {" mEvSelTrig" , kTVXinPHOS , " Select events with this trigger" };
49- Configurable<double > mMinCellAmplitude {" minCellAmplitude" , 0 ., " Minimum cell amplitude for histograms. " };
55+ Configurable<double > mMinCellAmplitude {" minCellAmplitude" , 0.5 , " Minimum cell energy for histograms (GeV) " };
5056 Configurable<double > mMinCellTimeMain {" minCellTimeMain" , -50 , " Min. cell time of main bunch selection" };
5157 Configurable<double > mMaxCellTimeMain {" maxCellTimeMain" , 100 , " Max. cell time of main bunch selection" };
5258 Configurable<int > mVetoBCID {" vetoBCID" , -1 , " BC ID to be excluded" };
59+ Configurable<std::string> mCalibPath {" calibPath" , " PHS/Calib/CalibParams" , " path to Calibration snapshot" };
5360
5461 o2::framework::HistogramRegistry mHistManager {" phosCallQAHistograms" };
5562
@@ -91,6 +98,15 @@ struct phosCellQA {
9198 void process (o2::aod::Calos const & cells, BCsWithBcSels const & bcs)
9299 {
93100 LOG (debug) << " Processing next event" ;
101+
102+ int64_t timestamp = 0 ;
103+ if (bcs.begin () != bcs.end ()) {
104+ timestamp = bcs.begin ().timestamp (); // timestamp for CCDB object retrieval
105+ } else {
106+ return ;
107+ }
108+ const o2::phos::CalibParams* calibParams = ccdb->getForTimeStamp <o2::phos::CalibParams>(mCalibPath , timestamp);
109+
94110 for (const auto & bc : bcs) {
95111 o2::InteractionRecord eventIR;
96112 eventIR.setFromLong (bc.globalBC ());
@@ -110,45 +126,52 @@ struct phosCellQA {
110126 if (mVetoBCID >= 0 && cellIR.bc == mVetoBCID )
111127 continue ;
112128 mHistManager .fill (HIST (" cellBCSelected" ), cellIR.bc );
113- // mHistManager.fill(HIST("cellAmplitude"), cell.amplitude(), cell.cellNumber());
114129
115130 if (!cell.bc_as <BCsWithBcSels>().alias_bit (mEvSelTrig ))
116131 continue ;
117132
118- if (cell.amplitude () < mMinCellAmplitude )
133+ bool isHighGain = cell.cellType ();
134+ double energy = calibParams->getGain (cell.cellNumber ()) * cell.amplitude ();
135+ // if (isHighGain) {
136+ // energy = calibParams->getGain(cell.cellNumber()) * cell.amplitude();
137+ // } else {
138+ // energy = calibParams->getGain(cell.cellNumber()) * cell.amplitude() * calibParams->getHGLGRatio(cell.cellNumber());
139+ // }
140+
141+ if (energy < mMinCellAmplitude )
119142 continue ;
120143 char relid[3 ];
121144 o2::phos::Geometry::absToRelNumbering (cell.cellNumber (), relid);
122145 if (relid[0 ] == 1 ) {
123146 mHistManager .fill (HIST (" cellOccM1" ), relid[1 ] - 0.5 , relid[2 ] - 0.5 );
124- mHistManager .fill (HIST (" cellAmpM1" ), relid[1 ] - 0.5 , relid[2 ] - 0.5 , cell. amplitude () );
147+ mHistManager .fill (HIST (" cellAmpM1" ), relid[1 ] - 0.5 , relid[2 ] - 0.5 , energy );
125148 mHistManager .fill (HIST (" cellTimeM1" ), relid[1 ] - 0.5 , relid[2 ] - 0.5 , cell.time ());
126149 if (cell.time () > mMinCellTimeMain && cell.time () < mMaxCellTimeMain ) {
127- mHistManager .fill (HIST (" cellAmpTimeM1" ), cell.time (), cell. amplitude () );
150+ mHistManager .fill (HIST (" cellAmpTimeM1" ), cell.time (), energy );
128151 }
129152 }
130153 if (relid[0 ] == 2 ) {
131154 mHistManager .fill (HIST (" cellOccM2" ), relid[1 ] - 0.5 , relid[2 ] - 0.5 );
132- mHistManager .fill (HIST (" cellAmpM2" ), relid[1 ] - 0.5 , relid[2 ] - 0.5 , cell. amplitude () );
155+ mHistManager .fill (HIST (" cellAmpM2" ), relid[1 ] - 0.5 , relid[2 ] - 0.5 , energy );
133156 mHistManager .fill (HIST (" cellTimeM2" ), relid[1 ] - 0.5 , relid[2 ] - 0.5 , cell.time ());
134157 if (cell.time () > mMinCellTimeMain && cell.time () < mMaxCellTimeMain ) {
135- mHistManager .fill (HIST (" cellAmpTimeM2" ), cell.time (), cell. amplitude () );
158+ mHistManager .fill (HIST (" cellAmpTimeM2" ), cell.time (), energy );
136159 }
137160 }
138161 if (relid[0 ] == 3 ) {
139162 mHistManager .fill (HIST (" cellOccM3" ), relid[1 ] - 0.5 , relid[2 ] - 0.5 );
140- mHistManager .fill (HIST (" cellAmpM3" ), relid[1 ] - 0.5 , relid[2 ] - 0.5 , cell. amplitude () );
163+ mHistManager .fill (HIST (" cellAmpM3" ), relid[1 ] - 0.5 , relid[2 ] - 0.5 , energy );
141164 mHistManager .fill (HIST (" cellTimeM3" ), relid[1 ] - 0.5 , relid[2 ] - 0.5 , cell.time ());
142165 if (cell.time () > mMinCellTimeMain && cell.time () < mMaxCellTimeMain ) {
143- mHistManager .fill (HIST (" cellAmpTimeM3" ), cell.time (), cell. amplitude () );
166+ mHistManager .fill (HIST (" cellAmpTimeM3" ), cell.time (), energy );
144167 }
145168 }
146169 if (relid[0 ] == 4 ) {
147170 mHistManager .fill (HIST (" cellOccM4" ), relid[1 ] - 0.5 , relid[2 ] - 0.5 );
148- mHistManager .fill (HIST (" cellAmpM4" ), relid[1 ] - 0.5 , relid[2 ] - 0.5 , cell. amplitude () );
171+ mHistManager .fill (HIST (" cellAmpM4" ), relid[1 ] - 0.5 , relid[2 ] - 0.5 , energy );
149172 mHistManager .fill (HIST (" cellTimeM4" ), relid[1 ] - 0.5 , relid[2 ] - 0.5 , cell.time ());
150173 if (cell.time () > mMinCellTimeMain && cell.time () < mMaxCellTimeMain ) {
151- mHistManager .fill (HIST (" cellAmpTimeM4" ), cell.time (), cell. amplitude () );
174+ mHistManager .fill (HIST (" cellAmpTimeM4" ), cell.time (), energy );
152175 }
153176 }
154177 }
0 commit comments