1111
1212// /
1313// / \file SACs.cxx
14- // / \author Thomas Klemenz
14+ // / \author Thomas Klemenz, Marcel Lesch
1515// /
1616
1717// O2 includes
@@ -129,6 +129,10 @@ void SACs::configure(const boost::property_tree::ptree& config)
129129 ILOG (Warning, Support) << " No rejection for outliers in SAC Zero Scale!" << ENDM;
130130 }
131131 mSACZeroMaxDeviation = config.get <float >(" qc.postprocessing." + id + " .maxDeviationOutlierSACZero" , 3 .);
132+ mDoSACFourierCoeffs = config.get <bool >(" qc.postprocessing." + id + " .doSACFourierCoeffs" , false );
133+ if (mDoSACFourierCoeffs ) {
134+ ILOG (Warning, Support) << " SAC Fourier Coeffs activated, these are currently not in use!" << ENDM;
135+ }
132136}
133137
134138void SACs::initialize (Trigger, framework::ServiceRegistryRef)
@@ -147,11 +151,13 @@ void SACs::initialize(Trigger, framework::ServiceRegistryRef)
147151 getObjectsManager ()->startPublishing (mSACZeroSides .get ());
148152 getObjectsManager ()->startPublishing (mSACDeltaSides .get ());
149153 getObjectsManager ()->startPublishing (mSACOneSides .get ());
150- getObjectsManager ()->startPublishing (mFourierCoeffsA .get ());
151- getObjectsManager ()->startPublishing (mFourierCoeffsC .get ());
152154 getObjectsManager ()->startPublishing (mSACZeroSidesScaled .get ());
153155 getObjectsManager ()->startPublishing (mSACZeroScale .get ());
154156 getObjectsManager ()->startPublishing (mSACZeroOutliers .get ());
157+ if (mDoSACFourierCoeffs ) {
158+ getObjectsManager ()->startPublishing (mFourierCoeffsA .get ());
159+ getObjectsManager ()->startPublishing (mFourierCoeffsC .get ());
160+ }
155161}
156162
157163void SACs::update (Trigger, framework::ServiceRegistryRef)
@@ -165,26 +171,34 @@ void SACs::update(Trigger, framework::ServiceRegistryRef)
165171 mSACZeroScale .get ()->Clear ();
166172 mSACZeroOutliers .get ()->Clear ();
167173
168- o2::tpc::SACZero* sacZero = nullptr ;
169- o2::tpc::SACDelta<unsigned char >* sacDelta = nullptr ;
170- o2::tpc::SACOne* sacOne = nullptr ;
174+ o2::tpc::SAC<unsigned char >* sacContainer = nullptr ;
171175 o2::tpc::FourierCoeffSAC* sacFFT = nullptr ;
172176
173177 if (mDoLatest ) {
174- std::vector<long > availableTimestampsSACZero = getDataTimestamps (mCdbApi , CDBTypeMap.at (CDBType::CalSAC0), 1 , mTimestamps [" SACZero" ]);
175- std::vector<long > availableTimestampsSACDelta = getDataTimestamps (mCdbApi , CDBTypeMap.at (CDBType::CalSACDelta), 1 , mTimestamps [" SACDelta" ]);
176- std::vector<long > availableTimestampsSACOne = getDataTimestamps (mCdbApi , CDBTypeMap.at (CDBType::CalSAC1), 1 , mTimestamps [" SACOne" ]);
178+ std::vector<long > availableTimestampsSACContainer = getDataTimestamps (mCdbApi , CDBTypeMap.at (CDBType::CalSAC), 1 , mTimestamps [" SACContainer" ]);
177179 std::vector<long > availableTimestampsSACFourierCoeffs = getDataTimestamps (mCdbApi , CDBTypeMap.at (CDBType::CalSACFourier), 1 , mTimestamps [" SACFourierCoeffs" ]);
178180
179- sacZero = mCdbApi .retrieveFromTFileAny <SACZero> (CDBTypeMap.at (CDBType::CalSAC0 ), std::map<std::string, std::string>{}, availableTimestampsSACZero [0 ]);
180- sacDelta = mCdbApi . retrieveFromTFileAny <SACDelta< unsigned char >>(CDBTypeMap. at (CDBType::CalSACDelta), std::map<std::string, std::string>{}, availableTimestampsSACDelta[ 0 ]);
181- sacOne = mCdbApi .retrieveFromTFileAny <SACOne >(CDBTypeMap.at (CDBType::CalSAC1 ), std::map<std::string, std::string>{}, availableTimestampsSACOne [0 ]);
182- sacFFT = mCdbApi . retrieveFromTFileAny <FourierCoeffSAC>(CDBTypeMap. at (CDBType::CalSACFourier), std::map<std::string, std::string>{}, availableTimestampsSACFourierCoeffs[ 0 ]);
181+ sacContainer = mCdbApi .retrieveFromTFileAny <SAC< unsigned char >> (CDBTypeMap.at (CDBType::CalSAC ), std::map<std::string, std::string>{}, availableTimestampsSACContainer [0 ]);
182+ if ( mDoSACFourierCoeffs ) {
183+ sacFFT = mCdbApi .retrieveFromTFileAny <FourierCoeffSAC >(CDBTypeMap.at (CDBType::CalSACFourier ), std::map<std::string, std::string>{}, availableTimestampsSACFourierCoeffs [0 ]);
184+ }
183185 } else {
184- sacZero = mCdbApi .retrieveFromTFileAny <SACZero>(CDBTypeMap.at (CDBType::CalSAC0), std::map<std::string, std::string>{}, mTimestamps [" SACZero" ]);
185- sacDelta = mCdbApi .retrieveFromTFileAny <SACDelta<unsigned char >>(CDBTypeMap.at (CDBType::CalSACDelta), std::map<std::string, std::string>{}, mTimestamps [" SACDelta" ]);
186- sacOne = mCdbApi .retrieveFromTFileAny <SACOne>(CDBTypeMap.at (CDBType::CalSAC1), std::map<std::string, std::string>{}, mTimestamps [" SACOne" ]);
187- sacFFT = mCdbApi .retrieveFromTFileAny <FourierCoeffSAC>(CDBTypeMap.at (CDBType::CalSACFourier), std::map<std::string, std::string>{}, mTimestamps [" SACFourierCoeffs" ]);
186+ sacContainer = mCdbApi .retrieveFromTFileAny <SAC<unsigned char >>(CDBTypeMap.at (CDBType::CalSAC), std::map<std::string, std::string>{}, mTimestamps [" SACContainer" ]);
187+ if (mDoSACFourierCoeffs ) {
188+ sacFFT = mCdbApi .retrieveFromTFileAny <FourierCoeffSAC>(CDBTypeMap.at (CDBType::CalSACFourier), std::map<std::string, std::string>{}, mTimestamps [" SACFourierCoeffs" ]);
189+ }
190+ }
191+
192+ o2::tpc::SACZero* sacZero = nullptr ;
193+ o2::tpc::SACDelta<unsigned char >* sacDelta = nullptr ;
194+ o2::tpc::SACOne* sacOne = nullptr ;
195+
196+ if (!sacContainer) {
197+ ILOG (Error, Support) << " No SAC Container fetched" << ENDM;
198+ } else {
199+ sacZero = &(sacContainer->mSACZero );
200+ sacDelta = &(sacContainer->mSACDelta );
201+ sacOne = &(sacContainer->mSACOne );
188202 }
189203
190204 if (sacZero) {
@@ -211,9 +225,7 @@ void SACs::update(Trigger, framework::ServiceRegistryRef)
211225 mSACs .drawFourierCoeffSAC (Side::C, mRanges [" SACFourierCoeffs" ].at (0 ), mRanges [" SACFourierCoeffs" ].at (1 ), mRanges [" SACFourierCoeffs" ].at (2 ), mFourierCoeffsC .get ());
212226 }
213227
214- delete sacZero;
215- delete sacDelta;
216- delete sacOne;
228+ delete sacContainer;
217229 delete sacFFT;
218230
219231 mSACs .setSACZero (nullptr );
@@ -228,20 +240,25 @@ void SACs::finalize(Trigger, framework::ServiceRegistryRef)
228240 getObjectsManager ()->stopPublishing (mSACZeroSides .get ());
229241 getObjectsManager ()->stopPublishing (mSACOneSides .get ());
230242 getObjectsManager ()->stopPublishing (mSACDeltaSides .get ());
231- getObjectsManager ()->stopPublishing (mFourierCoeffsA .get ());
232- getObjectsManager ()->stopPublishing (mFourierCoeffsC .get ());
233243 getObjectsManager ()->stopPublishing (mSACZeroSidesScaled .get ());
234244 getObjectsManager ()->stopPublishing (mSACZeroScale .get ());
235245 getObjectsManager ()->stopPublishing (mSACZeroOutliers .get ());
236246
247+ if (mDoSACFourierCoeffs ) {
248+ getObjectsManager ()->stopPublishing (mFourierCoeffsA .get ());
249+ getObjectsManager ()->stopPublishing (mFourierCoeffsC .get ());
250+ }
251+
237252 mSACZeroSides .reset ();
238253 mSACOneSides .reset ();
239254 mSACDeltaSides .reset ();
240- mFourierCoeffsA .reset ();
241- mFourierCoeffsC .reset ();
242255 mSACZeroSidesScaled .reset ();
243256 mSACZeroScale .reset ();
244257 mSACZeroOutliers .reset ();
258+ if (mDoSACFourierCoeffs ) {
259+ mFourierCoeffsA .reset ();
260+ mFourierCoeffsC .reset ();
261+ }
245262}
246263
247264} // namespace o2::quality_control_modules::tpc
0 commit comments