ATLAS Offline Software
Loading...
Searching...
No Matches
ALFA_CLinkAlg.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4
9
13#include "ALFA_CLinkAlg.h"
14
15using namespace std;
16
17ALFA_CLinkAlg::ALFA_CLinkAlg(const std::string& name, ISvcLocator* pSvcLocator)
18 : AthAlgorithm(name, pSvcLocator)
19{
20 // data type using in the local reconstruction
21 // for the simulation data the value is 0, for the real data the value is 1. Unset value is -1
22 declareProperty("DataType", m_nDataType=1, "data type using in the local reconstruction");
23 declareProperty("ProcessingMode", m_nProcessingMode=2, "Processing mode, 1=offline, 2=online");
24
26}
27
28
33
35{
36 ATH_MSG_DEBUG ("ALFA_CLinkAlg::initialize()");
37
38 ATH_CHECK( m_BLMKey.initialize (m_nDataType==1) );
39 ATH_CHECK( m_HVChannelKey.initialize (m_nDataType==1) );
41 ATH_CHECK( m_movementKey.initialize (m_nDataType==1) );
42 ATH_CHECK( m_radmonKey.initialize (m_nDataType==1) );
43 ATH_CHECK( m_triggerRatesKey.initialize (m_nDataType==1) );
46
47 ATH_CHECK( m_rawDataContKey.initialize (m_nDataType==1) );
48 ATH_CHECK( m_digitCollKey.initialize() );
49 ATH_CHECK( m_ODDigitCollKey.initialize() );
50 ATH_CHECK( m_locRecEvCollKey.initialize() );
51 ATH_CHECK( m_locRecODEvCollKey.initialize() );
52 ATH_CHECK( m_locRecCorrEvCollKey.initialize() );
53 ATH_CHECK( m_locRecCorrODEvCollKey.initialize() );
54
55 ATH_CHECK( m_clinkEventKey.initialize() );
56 ATH_CHECK( m_xaodDataKey.initialize() );
57
58 return StatusCode::SUCCESS;
59}
60
61StatusCode ALFA_CLinkAlg::execute(const EventContext& ctx)
62{
63 ATH_MSG_DEBUG ("ALFA_CLinkAlg::execute()");
64
65
66 auto pDataEvent = std::make_unique<ALFA_CLinkEvent>();
67
68 ATH_CHECK( LoadAllEventData(ctx, *pDataEvent) );
69 if (m_nDataType==1) {
70 DCSID DCSIds;
71 ATH_CHECK( CalcAllDCSIds (ctx, DCSIds) );
72 pDataEvent->SetDCSFolderIDs(&DCSIds);
73 }
75 ATH_CHECK( clinkEventH.record (std::move (pDataEvent)) );
76 ATH_CHECK( GenerateXAOD (ctx) );
77
78 return StatusCode::SUCCESS;
79}
80
82{
83 ATH_MSG_DEBUG ("ALFA_CLinkAlg::finalize()");
84
85 return StatusCode::SUCCESS;
86}
87
88StatusCode ALFA_CLinkAlg::LoadAllEventData(const EventContext& ctx,
89 ALFA_CLinkEvent& dataEvent) const
90{
91 //RawDataContainer
92 if (m_nDataType==1)
93 {
95 if(!rawDataCont.isValid())
96 {
97 ATH_MSG_WARNING( "Container '"<<EVCOLLNAME_RAWDATA<<"' not found" );
98 //return StatusCode::FAILURE;
99 }
100 else ATH_CHECK(dataEvent.AddLink(EDVT_RAWDATAEVCOLLECTION, rawDataCont.cptr()));
101 }
102
103 //DigitCollection
105 if(!digitColl.isValid()) {
106 ATH_MSG_WARNING( "Container '"<<EVCOLLNAME_DIGIT<<"' not found" );
107 //return StatusCode::FAILURE;
108 }
109 else ATH_CHECK(dataEvent.AddLink(EDVT_DIGITCOLLECTION, digitColl.cptr()));
110
111 //ODDigitCollection
113 if(!odDigitColl.isValid()) {
114 ATH_MSG_WARNING( "Container '"<<EVCOLLNAME_ODDIGIT<<"' not found" );
115 //return StatusCode::FAILURE;
116 }
117 else ATH_CHECK(dataEvent.AddLink(EDVT_ODDIGITCOLLECTION, odDigitColl.cptr()));
118
119 //LocRecEvCollection
121 if(!locRecEvColl.isValid()) {
122 ATH_MSG_WARNING( "Container '"<<EVCOLLNAME_LOCREC<<"' not found" );
123 //return StatusCode::FAILURE;
124 }
125 else ATH_CHECK(dataEvent.AddLink(EDVT_LOCRECEVCOLLECTION, locRecEvColl.cptr()));
126
127 //LocRecODEvCollection
129 if(!locRecODEvColl.isValid()) {
130 ATH_MSG_WARNING( "Container '"<<EVCOLLNAME_LOCRECOD<<"' not found" );
131 //return StatusCode::FAILURE;
132 }
133 else CHECK(dataEvent.AddLink(EDVT_LOCRECODEVCOLLECTION, locRecODEvColl.cptr()));
134
135 //LocRecCorrEvCollection
137 if(!locRecCorrEvColl.isValid()) {
138 ATH_MSG_WARNING( "Container '"<<EVCOLLNAME_LOCRECCORR<<"' not found" );
139 //return StatusCode::FAILURE;
140 }
141 else CHECK(dataEvent.AddLink(EDVT_LOCRECCORREVCOLLECTION, locRecCorrEvColl.cptr()));
142
143 //LocRecCorrODEvCollection
145 if(!locRecCorrODEvColl.isValid()) {
146 ATH_MSG_WARNING("Container '"<<EVCOLLNAME_LOCRECCORROD<<"' not found" );
147 //return StatusCode::FAILURE;
148 }
149 else CHECK(dataEvent.AddLink(EDVT_LOCRECCORRODEVCOLLECTION, locRecCorrODEvColl.cptr()));
150
151 return StatusCode::SUCCESS;
152
153}
154
155unsigned long long
156ALFA_CLinkAlg::CalcDCSId (const EventContext& ctx,
158{
159 unsigned long long ullID;
160 std::string Folder;
161
163 EventIDRange range;
164 if (!h.range (range)) return 0;
165
166 // Construct the ID:
167 EventIDBase time = range.start();
168 if(time.isRunLumi()){
169 ullID=static_cast<unsigned long long>(((time.run_number()&0xffff)<<16)|(time.lumi_block()&0xffff));
170 }
171 else if(time.isTimeStamp()){
172 ullID = time.time_stamp();
173 ullID <<= 32;
174 ullID |= time.time_stamp_ns_offset();
175 }
176 else{
177 ullID=0;
178 }
179
180 return ullID;
181}
182
183StatusCode ALFA_CLinkAlg::CalcAllDCSIds (const EventContext& ctx,
184 DCSID& DCSIds) const
185{
186 bool bRes=true;
187
188 bRes&=(DCSIds.ullBlmID=CalcDCSId(ctx, m_BLMKey))>0;
189 bRes&=(DCSIds.ullHVChannelID=CalcDCSId(ctx, m_HVChannelKey))>0;
191 bRes&=(DCSIds.ullMovementID=CalcDCSId(ctx, m_movementKey))>0;
192 bRes&=(DCSIds.ullRadMonID=CalcDCSId(ctx, m_radmonKey))>0;
193 bRes&=(DCSIds.ullTriggerRatesID=CalcDCSId(ctx, m_triggerRatesKey))>0;
196 return bRes? StatusCode::SUCCESS:StatusCode::FAILURE;
197}
198
199StatusCode ALFA_CLinkAlg::GenerateXAOD(const EventContext& ctx)
200{
201 auto pxAODContainer = std::make_unique<xAOD::ALFADataContainer>();
202 auto pxAODAuxContainer = std::make_unique<xAOD::ALFADataAuxContainer>();
203 pxAODContainer->setStore(pxAODAuxContainer.get());
204
205 CHECK(FillXAOD_TrackingData(ctx, *pxAODContainer));
206 CHECK(FillXAOD_HeaderData(ctx, *pxAODContainer));
207
209 ATH_CHECK( xaodData.record (std::move(pxAODContainer),
210 std::move(pxAODAuxContainer)) );
211
212 return StatusCode::SUCCESS;
213}
214
215StatusCode ALFA_CLinkAlg::FillXAOD_TrackingData(const EventContext& ctx,
216 xAOD::ALFADataContainer& xAODContainer)
217{
218 unsigned int i;
219 int nPotID, nSideID, nODSign;
220 int arrTrackCntPerRPot[RPOTSCNT];
221 vector<int> vecFiberSel;
222
223 //LocRecEvCollection & LocRecODEvCollection
226
227 if(locRecEvColl.isValid() && locRecODEvColl.isValid())
228 {
230 // resolve max track count from LocRecEvCollection
231 memset(&arrTrackCntPerRPot[0],0,sizeof(arrTrackCntPerRPot));
232 for(const ALFA_LocRecEvent* locRecEvent : *locRecEvColl)
233 {
234 nPotID=locRecEvent->getPotNum();
235 arrTrackCntPerRPot[nPotID]++;
236 }
237 for(const ALFA_LocRecODEvent* locRecODEvent : *locRecODEvColl)
238 {
239 nPotID=locRecODEvent->getPotNum();
240 arrTrackCntPerRPot[nPotID]++;
241 }
242 for(i=0;i<RPOTSCNT;i++){
243 if(arrTrackCntPerRPot[i]>m_nMaxTrackCnt) m_nMaxTrackCnt=arrTrackCntPerRPot[i];
244 }
245
246 memset(&arrTrackCntPerRPot[0],0,sizeof(arrTrackCntPerRPot));
248
249 //fill data - LocRecEvCollection
250 vecFiberSel.clear();
251 for(const ALFA_LocRecEvent* locRecEvent : *locRecEvColl)
252 {
253 nPotID=locRecEvent->getPotNum();
254
255 (m_vecDetectorPartID)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=1;
256 (m_vecXDetCS)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=locRecEvent->getXposition();
257 (m_vecYDetCS)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=locRecEvent->getYposition();
258
259 (m_vecOverU)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=locRecEvent->getOverU();
260 (m_vecOverV)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=locRecEvent->getOverV();
261 (m_vecNumU)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=locRecEvent->getNumU();
262 (m_vecNumV)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=locRecEvent->getNumV();
263
264 vecFiberSel=locRecEvent->getFibSel();
265 for(i=0;i<vecFiberSel.size();i++)
266 {
267 (m_vecMDFibSel)[nPotID*m_nMaxTrackCnt*MDLAYERSCNT*MDPLATESCNT+arrTrackCntPerRPot[nPotID]*MDLAYERSCNT*MDPLATESCNT+i]=vecFiberSel[i];
268 }
269
270 arrTrackCntPerRPot[nPotID]++;
271 }
272
273 //fill data - LocRecODEvCollection
274 vecFiberSel.clear();
275 for(const ALFA_LocRecODEvent* locRecODEvent : *locRecODEvColl)
276 {
277 nPotID=locRecODEvent->getPotNum();
278 nSideID=locRecODEvent->getSide();
279
280 nODSign=(nSideID==0)? -1:1;
281 (m_vecDetectorPartID)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=(nSideID==0)? 3:2;
282 (m_vecXDetCS)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=nODSign*22.0;
283 (m_vecYDetCS)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=locRecODEvent->getYposition();
284 (m_vecOverY)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=locRecODEvent->getOverY();
285 (m_vecNumY)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=locRecODEvent->getNumY();
286
287 vecFiberSel=locRecODEvent->getFibSel();
288 for(i=0;i<vecFiberSel.size();i++)
289 {
290 (m_vecODFibSel)[nPotID*m_nMaxTrackCnt*ODPLATESCNT+arrTrackCntPerRPot[nPotID]*ODPLATESCNT+i]=vecFiberSel[i];
291 }
292
293 arrTrackCntPerRPot[nPotID]++;
294 }
295
296 }
297 else
298 {
299 ATH_MSG_WARNING( "Cannot find '"<< EVCOLLNAME_LOCREC <<"' or '"<<EVCOLLNAME_LOCRECOD<<"' collection" );
300 //return StatusCode::FAILURE;
301 }
302
303 //LocRecCorrEvCollection && LocRecCorrODEvCollection
306
307 if(locRecCorrEvColl.isValid() && locRecCorrODEvColl.isValid())
308 {
309 memset(&arrTrackCntPerRPot[0],0,sizeof(arrTrackCntPerRPot));
311
312 //fill data - LocRecCorrEvCollection - ONLY DetCS for now (TODO rest)
313 for(const ALFA_LocRecCorrEvent* locRecCorrEvent : *locRecCorrEvColl)
314 {
315 nPotID=locRecCorrEvent->getPotNum();
316
317 (m_vecXLhcCS)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=locRecCorrEvent->getXpositionLHC();
318 (m_vecYLhcCS)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=locRecCorrEvent->getYpositionLHC();
319 (m_vecZLhcCS)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=locRecCorrEvent->getZpositionLHC();
320
321 (m_vecXRPotCS)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=locRecCorrEvent->getXpositionPot();
322 (m_vecYRPotCS)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=locRecCorrEvent->getYpositionPot();
323
324 (m_vecXStatCS)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=locRecCorrEvent->getXpositionStat();
325 (m_vecYStatCS)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=locRecCorrEvent->getYpositionStat();
326
327 (m_vecXBeamCS)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=locRecCorrEvent->getXpositionBeam();
328 (m_vecYBeamCS)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=locRecCorrEvent->getYpositionBeam();
329
330 arrTrackCntPerRPot[nPotID]++;
331 }
332
333 //fill data - LocRecCorrODEvCollection - ONLY DetCS for now (TODO rest)
334 for(const ALFA_LocRecCorrODEvent* locRecCorrODEvent : *locRecCorrODEvColl)
335 {
336 nPotID=locRecCorrODEvent->getPotNum();
337 nSideID=locRecCorrODEvent->getSide();
338
339 nODSign=(nSideID==0)? -1:1;
340 (m_vecXLhcCS)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=nODSign*22.0;
341 (m_vecYLhcCS)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=locRecCorrODEvent->getYpositionLHC();
342 (m_vecZLhcCS)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=locRecCorrODEvent->getZpositionLHC();
343
344 (m_vecXRPotCS)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=nODSign*22.0;
345 (m_vecYRPotCS)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=locRecCorrODEvent->getYpositionPot();
346
347 (m_vecXStatCS)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=nODSign*22.0;
348 (m_vecYStatCS)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=locRecCorrODEvent->getYpositionStat();
349
350 (m_vecXBeamCS)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=nODSign*22.0;
351 (m_vecYBeamCS)[nPotID*m_nMaxTrackCnt+arrTrackCntPerRPot[nPotID]]=locRecCorrODEvent->getYpositionBeam();
352
353 arrTrackCntPerRPot[nPotID]++;
354 }
355 }
356 else
357 {
358 ATH_MSG_WARNING( "Cannot find '"<< EVCOLLNAME_LOCRECCORR <<"' or '"<<EVCOLLNAME_LOCRECCORROD<<"' collection" );
359 //return StatusCode::FAILURE;
360 }
361
362 auto pData =
363 xAODContainer.push_back(std::make_unique<xAOD::ALFAData>());
364
365 //LocRecEvCollection & LocRecODEvCollection
366 pData->setXDetCS(m_vecXDetCS);
367 pData->setYDetCS(m_vecYDetCS);
368 pData->setDetectorPartID(m_vecDetectorPartID);
369 pData->setMaxTrackCnt(m_nMaxTrackCnt);
370 pData->setOverU(m_vecOverU);
371 pData->setOverV(m_vecOverV);
372 pData->setOverY(m_vecOverY);
373 pData->setNumU(m_vecNumU);
374 pData->setNumV(m_vecNumV);
375 pData->setNumY(m_vecNumY);
376 pData->setMDFibSel(m_vecMDFibSel);
377 pData->setODFibSel(m_vecODFibSel);
378
379 //LocRecCorrEvCollection & LocRecCorrODEvCollection
380 pData->setXLhcCS(m_vecXLhcCS);
381 pData->setYLhcCS(m_vecYLhcCS);
382 pData->setZLhcCS(m_vecZLhcCS);
383 pData->setXRPotCS(m_vecXRPotCS);
384 pData->setYRPotCS(m_vecYRPotCS);
385 pData->setXStatCS(m_vecXStatCS);
386 pData->setYStatCS(m_vecYStatCS);
387 pData->setXBeamCS(m_vecXBeamCS);
388 pData->setYBeamCS(m_vecYBeamCS);
389
390 return StatusCode::SUCCESS;
391}
392
393StatusCode ALFA_CLinkAlg::FillXAOD_HeaderData(const EventContext& ctx,
394 xAOD::ALFADataContainer& xAODContainer)
395{
396 unsigned int i;
397 int nPotID, nPlateID, nFiberID, nSideID;
399
400 if (m_nDataType==1)
401 {
402 //DCS IDs
403 /*
404 *m_pullDCSBlmID=DataEvent.GetDCSFolderID(EDCSI_BLM);
405 *m_pullDCSHVChannelID=DataEvent.GetDCSFolderID(EDCSI_HVCHANNEL);
406 *m_pullDCSLocalMonitoringID=DataEvent.GetDCSFolderID(EDCSI_LOCALMONITORING);
407 *m_pullDCSMovementID=DataEvent.GetDCSFolderID(EDCSI_MOVEMENT);
408 *m_pullDCSRadMonID=DataEvent.GetDCSFolderID(EDCSI_RADMON);
409 *m_pullDCSTriggerRatesID=DataEvent.GetDCSFolderID(EDCSI_TRIGGERRATES);
410 *m_pullDCSFEConfigurationID=DataEvent.GetDCSFolderID(EDCSI_FECONFIGURATION);
411 *m_pullDCSTriggerSettingsID=DataEvent.GetDCSFolderID(EDCSI_TRIGGERSETTINGS);*/
412
413 //RawDataContainer
415 if(rawDataCont.isValid())
416 {
417 //m_nTimeStamp=pRawDataColl->GetTimeStamp();
418 //m_nTimeStamp_ns=pRawDataColl->GetTimeStampns();
419 //m_nBCId=pRawDataColl->GetBCId();
420
421 vector<bool> vecRPPattern;
422 for (const ALFA_RawDataCollection* rawDataColl : *rawDataCont)
423 {
424 nPotID=rawDataColl->GetMBId_POT();
425 (m_vecScaler)[nPotID-1]=rawDataColl->Get_scaler_POT();
426
427 vecRPPattern=rawDataColl->Get_pattern_POT();
428 for(i=0;i<vecRPPattern.size();i++){
429 if(i<RPOTSCNT*TRIGPATCNT) (m_vecTrigPat)[(nPotID-1)*TRIGPATCNT+i]=vecRPPattern[vecRPPattern.size()-(i+1)];
430 }
431 }
432 }
433 else
434 {
435 ATH_MSG_WARNING( "Cannot find '"<< EVCOLLNAME_RAWDATA <<"' collection" );
436 //return StatusCode::FAILURE;
437 }
438 }
439
440 //DigitCollection
442 if(digitColl.isValid())
443 {
444 for (const ALFA_Digit* digit : *digitColl)
445 {
446 nPotID=digit->getStation(); //in range 0-7
447 nPlateID=digit->getPlate(); //indexed from 0
448 nFiberID=digit->getFiber(); //indexed from 0
449
450 if(nPotID<RPOTSCNT && nPlateID<(MDLAYERSCNT*MDPLATESCNT) && nFiberID<MDFIBERSCNT)
451 {
452 (m_vecMDFiberHits)[(nPotID*MDLAYERSCNT*MDPLATESCNT*MDFIBERSCNT)+(nPlateID*MDFIBERSCNT)+nFiberID]=1;
453 (m_vecMDMultiplicity)[(nPotID*MDLAYERSCNT*MDPLATESCNT)+nPlateID]++;
454 }
455 else
456 {
457 ATH_MSG_ERROR( "Index exceed array size for [RPotID, nPlateID, nFiberID]= ["<<nPotID<<", "<<nPlateID<<", "<<nFiberID<<"]" );
458 //return StatusCode::FAILURE;
459 }
460 }
461 }
462 else{
463 ATH_MSG_WARNING( "Cannot find '"<< EVCOLLNAME_DIGIT <<"' collection" );
464 //return StatusCode::FAILURE;
465 }
466
467 //ODDigitCollection
469 if(odDigitColl.isValid())
470 {
471 for (const ALFA_ODDigit* oddigit : *odDigitColl)
472 {
473 nPotID=oddigit->getStation(); //in range 0-7
474 nPlateID=oddigit->getPlate(); //indexed from 0
475 nSideID=oddigit->getSide(); //indexed from 0
476 nFiberID=oddigit->getFiber(); //indexed from 0
477
478 if(nPotID<RPOTSCNT && nPlateID<(ODPLATESCNT) && nFiberID<ODLAYERSCNT*ODFIBERSCNT)
479 {
480 if(nSideID==0){ //right side
482 (m_vecODMultiplicityNeg)[(nPotID*ODPLATESCNT)+nPlateID]++;
483 }
484 else{ //left side
486 (m_vecODMultiplicityPos)[(nPotID*ODPLATESCNT)+nPlateID]++;
487 }
488 }
489 else
490 {
491 ATH_MSG_ERROR( "Index exceed array size for [RPotID, nPlateID, nFiberID, nSideID]= ["<<nPotID<<", "<<nPlateID<<", "<<nFiberID<<", "<<nSideID<<"]" );
492 //return StatusCode::FAILURE;
493 }
494 }
495 }
496 else
497 {
498 ATH_MSG_WARNING( "Cannot find '"<< EVCOLLNAME_ODDIGIT <<"' collection" );
499 //return StatusCode::FAILURE;
500 }
501
502 auto pData =
503 xAODContainer.push_back(std::make_unique<xAOD::ALFAData>());
504
505 //RawDataContainer
506 pData->setScaler(m_vecScaler);
507 //pData->setBCId(m_nBCId);
508 //pData->setTimeStamp(m_nTimeStamp);
509 //pData->setTimeStamp_ns(m_nTimeStamp_ns);
510 pData->setTrigPat(m_vecTrigPat);
511
512 //DigitCollection
513 pData->setMDFiberHits(m_vecMDFiberHits);
514 pData->setMDMultiplicity(m_vecMDMultiplicity);
515
516 //ODDigitCollection
517 pData->setODFiberHitsPos(m_vecODFiberHitsPos);
518 pData->setODFiberHitsNeg(m_vecODFiberHitsNeg);
519 pData->setODMultiplicityPos(m_vecODMultiplicityPos);
520 pData->setODMultiplicityNeg(m_vecODMultiplicityNeg);
521
522 return StatusCode::SUCCESS;
523}
524
525void ALFA_CLinkAlg::ClearXAODTrackingData(const int nMaxTrackCnt, eRecType eType)
526{
527 if(eType==ERC_LOCUNCORRECTED)
528 {
529 //LocRecEvCollection & LocRecEvODCollection
530 m_vecXDetCS.resize(RPOTSCNT*nMaxTrackCnt);
531 fill_n(m_vecXDetCS.begin(),m_vecXDetCS.size(),-9999);
532 m_vecYDetCS.resize(RPOTSCNT*nMaxTrackCnt);
533 fill_n(m_vecYDetCS.begin(),m_vecYDetCS.size(),-9999);
534 m_vecDetectorPartID.resize(RPOTSCNT*nMaxTrackCnt);
535 fill_n(m_vecDetectorPartID.begin(),m_vecDetectorPartID.size(),0);
536 m_vecOverU.resize(RPOTSCNT*nMaxTrackCnt);
537 fill_n(m_vecOverU.begin(),m_vecOverU.size(),-9999);
538 m_vecOverV.resize(RPOTSCNT*nMaxTrackCnt);
539 fill_n(m_vecOverV.begin(),m_vecOverV.size(),-9999);
540 m_vecOverY.resize(RPOTSCNT*nMaxTrackCnt);
541 fill_n(m_vecOverY.begin(),m_vecOverY.size(),-9999);
542 m_vecNumU.resize(RPOTSCNT*nMaxTrackCnt);
543 fill_n(m_vecNumU.begin(),m_vecNumU.size(),-9999);
544 m_vecNumV.resize(RPOTSCNT*nMaxTrackCnt);
545 fill_n(m_vecNumV.begin(),m_vecNumV.size(),-9999);
546 m_vecNumY.resize(RPOTSCNT*nMaxTrackCnt);
547 fill_n(m_vecNumY.begin(),m_vecNumY.size(),-9999);
548 m_vecMDFibSel.resize(RPOTSCNT*nMaxTrackCnt*MDLAYERSCNT*MDPLATESCNT);
549 fill_n(m_vecMDFibSel.begin(),m_vecMDFibSel.size(),-9999);
550 m_vecODFibSel.resize(RPOTSCNT*nMaxTrackCnt*ODPLATESCNT);
551 fill_n(m_vecODFibSel.begin(),m_vecODFibSel.size(),-9999);
552 }
553 else if(eType==ERC_LOCCORRECTED)
554 {
555 m_vecXLhcCS.resize(RPOTSCNT*nMaxTrackCnt);
556 fill_n(m_vecXLhcCS.begin(),m_vecXLhcCS.size(),-9999);
557 m_vecYLhcCS.resize(RPOTSCNT*nMaxTrackCnt);
558 fill_n(m_vecYLhcCS.begin(),m_vecYLhcCS.size(),-9999);
559 m_vecZLhcCS.resize(RPOTSCNT*nMaxTrackCnt);
560 fill_n(m_vecZLhcCS.begin(),m_vecZLhcCS.size(),-9999);
561 m_vecXRPotCS.resize(RPOTSCNT*nMaxTrackCnt);
562 fill_n(m_vecXRPotCS.begin(),m_vecXRPotCS.size(),-9999);
563 m_vecYRPotCS.resize(RPOTSCNT*nMaxTrackCnt);
564 fill_n(m_vecYRPotCS.begin(),m_vecYRPotCS.size(),-9999);
565 m_vecXStatCS.resize(RPOTSCNT*nMaxTrackCnt);
566 fill_n(m_vecXStatCS.begin(),m_vecXStatCS.size(),-9999);
567 m_vecYStatCS.resize(RPOTSCNT*nMaxTrackCnt);
568 fill_n(m_vecYStatCS.begin(),m_vecYStatCS.size(),-9999);
569 m_vecXBeamCS.resize(RPOTSCNT*nMaxTrackCnt);
570 fill_n(m_vecXBeamCS.begin(),m_vecXBeamCS.size(),-9999);
571 m_vecYBeamCS.resize(RPOTSCNT*nMaxTrackCnt);
572 fill_n(m_vecYBeamCS.begin(),m_vecYBeamCS.size(),-9999);
573 }
574}
575
577{
578 if (m_nDataType==1)
579 {
580 //DCS IDs
581 /*
582 *m_pullDCSBlmID=0;
583 *m_pullDCSHVChannelID=0;
584 *m_pullDCSLocalMonitoringID=0;
585 *m_pullDCSMovementID=0;
586 *m_pullDCSRadMonID=0;
587 *m_pullDCSTriggerRatesID=0;
588 *m_pullDCSFEConfigurationID=0;
589 *m_pullDCSTriggerSettingsID=0;*/
590
591 //RawDataContainer
592 m_vecScaler.resize(RPOTSCNT);
593 fill_n(m_vecScaler.begin(),m_vecScaler.size(),-1);
594 //m_nBCId=-1;
595 //m_nTimeStamp=-1;
596 //m_nTimeStamp_ns=-1;
598 fill_n(m_vecTrigPat.begin(),m_vecTrigPat.size(),0);
599 }
600
601 //DigitCollection
603 fill_n(m_vecMDFiberHits.begin(),m_vecMDFiberHits.size(),0);
605 fill_n(m_vecMDMultiplicity.begin(),m_vecMDMultiplicity.size(),0);
606
607 //ODDigitCollection
609 fill_n(m_vecODFiberHitsPos.begin(),m_vecODFiberHitsPos.size(),0);
611 fill_n(m_vecODFiberHitsNeg.begin(),m_vecODFiberHitsNeg.size(),0);
612
614 fill_n(m_vecODMultiplicityPos.begin(),m_vecODMultiplicityPos.size(),0);
616 fill_n(m_vecODMultiplicityNeg.begin(),m_vecODMultiplicityNeg.size(),0);
617}
#define ODLAYERSCNT
#define MDFIBERSCNT
#define TRIGPATCNT
#define MDPLATESCNT
#define MDLAYERSCNT
#define RPOTSCNT
#define ODPLATESCNT
eRecType
@ ERC_LOCCORRECTED
@ ERC_LOCUNCORRECTED
#define ODFIBERSCNT
#define EVCOLLNAME_LOCRECOD
#define EVCOLLNAME_DIGIT
#define EVCOLLNAME_LOCRECCORR
#define EVCOLLNAME_RAWDATA
@ EDVT_LOCRECCORREVCOLLECTION
@ EDVT_LOCRECEVCOLLECTION
@ EDVT_RAWDATAEVCOLLECTION
@ EDVT_DIGITCOLLECTION
@ EDVT_ODDIGITCOLLECTION
@ EDVT_LOCRECCORRODEVCOLLECTION
@ EDVT_LOCRECODEVCOLLECTION
#define EVCOLLNAME_LOCRECCORROD
struct _DCSID DCSID
#define EVCOLLNAME_LOCREC
#define EVCOLLNAME_ODDIGIT
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
Helpers for checking error return status codes and reporting errors.
#define CHECK(...)
Evaluate an expression and check for errors.
Handle class for reading from StoreGate.
Handle class for recording to StoreGate.
std::vector< float > m_vecXDetCS
SG::ReadCondHandleKey< CondAttrListCollection > m_radmonKey
std::vector< int > m_vecODMultiplicityPos
SG::ReadHandleKey< ALFA_RawDataContainer > m_rawDataContKey
unsigned long long CalcDCSId(const EventContext &ctx, const SG::ReadCondHandleKey< CondAttrListCollection > &key) const
virtual StatusCode execute(const EventContext &ctx) override
Execute method.
SG::ReadHandleKey< ALFA_ODDigitCollection > m_ODDigitCollKey
std::vector< int > m_vecMDFibSel
SG::ReadCondHandleKey< CondAttrListCollection > m_movementKey
std::vector< float > m_vecXLhcCS
SG::ReadCondHandleKey< CondAttrListCollection > m_triggerRatesKey
StatusCode GenerateXAOD(const EventContext &ctx)
std::vector< float > m_vecYLhcCS
SG::ReadHandleKey< ALFA_LocRecEvCollection > m_locRecEvCollKey
std::vector< int > m_vecNumU
virtual StatusCode finalize() override
std::vector< float > m_vecYStatCS
SG::ReadCondHandleKey< CondAttrListCollection > m_localMonitoringKey
std::vector< float > m_vecOverU
std::vector< int > m_vecDetectorPartID
std::vector< int > m_vecODMultiplicityNeg
StatusCode FillXAOD_HeaderData(const EventContext &ctx, xAOD::ALFADataContainer &xAODContainer)
std::vector< float > m_vecXRPotCS
StatusCode CalcAllDCSIds(const EventContext &ctx, DCSID &pDCSIds) const
std::vector< int > m_vecODFibSel
std::vector< int > m_vecODFiberHitsPos
void ClearXAODHeaderData()
std::vector< float > m_vecYRPotCS
std::vector< int > m_vecMDMultiplicity
SG::ReadHandleKey< ALFA_LocRecCorrEvCollection > m_locRecCorrEvCollKey
virtual ~ALFA_CLinkAlg()
std::vector< float > m_vecXStatCS
std::vector< int > m_vecNumY
StatusCode FillXAOD_TrackingData(const EventContext &ctx, xAOD::ALFADataContainer &xAODContainer)
std::vector< int > m_vecScaler
std::vector< float > m_vecYDetCS
StatusCode LoadAllEventData(const EventContext &ctx, ALFA_CLinkEvent &dataEvent) const
SG::ReadCondHandleKey< CondAttrListCollection > m_FEConfigurationKey
std::vector< float > m_vecXBeamCS
SG::ReadCondHandleKey< CondAttrListCollection > m_triggerSettingsKey
virtual StatusCode initialize() override
std::vector< int > m_vecMDFiberHits
SG::ReadCondHandleKey< CondAttrListCollection > m_HVChannelKey
std::vector< int > m_vecNumV
std::vector< float > m_vecYBeamCS
SG::ReadHandleKey< ALFA_DigitCollection > m_digitCollKey
void ClearXAODTrackingData(const int nMaxTrackCnt, eRecType eType)
ALFA_CLinkAlg(const std::string &name, ISvcLocator *pSvcLocator)
SG::WriteHandleKey< ALFA_CLinkEvent > m_clinkEventKey
std::vector< float > m_vecZLhcCS
std::vector< float > m_vecOverY
std::vector< int > m_vecODFiberHitsNeg
SG::WriteHandleKey< xAOD::ALFADataContainer > m_xaodDataKey
SG::ReadHandleKey< ALFA_LocRecCorrODEvCollection > m_locRecCorrODEvCollKey
std::vector< int > m_vecTrigPat
std::vector< float > m_vecOverV
SG::ReadHandleKey< ALFA_LocRecODEvCollection > m_locRecODEvCollKey
SG::ReadCondHandleKey< CondAttrListCollection > m_BLMKey
StatusCode AddLink(eDVType eType, const void *pObj)
RDOs : Chamber Service Module, collection of RawData.
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
value_type push_back(value_type pElem)
Add an element to the end of the collection.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
const_pointer_type cptr()
Dereference the pointer.
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
STL namespace.
ALFADataContainer_v1 ALFADataContainer
unsigned long long ullFEConfigurationID
unsigned long long ullLocalMonitoringID
unsigned long long ullRadMonID
unsigned long long ullHVChannelID
unsigned long long ullMovementID
unsigned long long ullTriggerSettingsID
unsigned long long ullTriggerRatesID
unsigned long long ullBlmID