ATLAS Offline Software
ALFA_MDTracking.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
8  AthMessaging("ALFA_MDTracking")
9 {
10  ATH_MSG_DEBUG("begin ALFA_MDTracking::ALFA_MDTracking");
11 
12  m_iNumU = 0;
13  m_iNumV = 0;
14  m_fOverlapU = -9999.0;
15  m_fOverlapV = -9999.0;
16 
17 
19  m_iUVCut = 0;
20  m_fOverlapCut = 0.0;
21  m_fRecXPos = 0.0;
22  m_fRecYPos = 0.0;
23  m_iRPot = 0;
24 
25  memset(&m_iFibSel, 0, sizeof(m_iFibSel));
26  std::fill_n(m_iFibSel, sizeof(m_iFibSel)/sizeof(Int_t), -9999);
27 
28  ATH_MSG_DEBUG("end ALFA_MDTracking::ALFA_MDTracking");
29 }
30 
32 {
33  ATH_MSG_DEBUG("begin ALFA_MDTracking::~ALFA_MDTracking");
34  ATH_MSG_DEBUG("end ALFA_MDTracking::~ALFA_MDTracking");
35 }
36 
37 StatusCode ALFA_MDTracking::Initialize(Float_t faMD[RPOTSCNT][ALFALAYERSCNT*ALFAPLATESCNT][ALFAFIBERSCNT], Float_t fbMD[RPOTSCNT][ALFALAYERSCNT*ALFAPLATESCNT][ALFAFIBERSCNT], Int_t iMultiplicityCut, Int_t iUVCut, Float_t fOverlapCut)
38 {
39  ATH_MSG_DEBUG("begin ALFA_MDTracking::Initialize()");
40 
41  m_iMultiplicityCut = iMultiplicityCut;
42  m_iUVCut = iUVCut;
43  m_fOverlapCut = fOverlapCut;
44 
45  for (Int_t iRPot = 0; iRPot < RPOTSCNT; iRPot++)
46  {
47  for (Int_t iLayer = 0; iLayer < ALFALAYERSCNT*ALFAPLATESCNT; iLayer++)
48  {
49  for (Int_t iFiber = 0; iFiber < ALFAFIBERSCNT; iFiber++)
50  {
51  m_faMD[iRPot][iLayer][iFiber] = faMD[iRPot][iLayer][iFiber];
52  m_fbMD[iRPot][iLayer][iFiber] = fbMD[iRPot][iLayer][iFiber];
53  }
54  }
55  }
56 
57  ATH_MSG_DEBUG("end ALFA_MDTracking::Initialize()");
58 
59  return StatusCode::SUCCESS;
60 }
61 
62 StatusCode ALFA_MDTracking::Execute(Int_t iRPot, const std::list<MDHIT> &ListMDHits)
63 {
64  ATH_MSG_DEBUG("ALFA_MDTracking::Execute()");
65 
66  FIBERS structFibers;
67  Int_t iNumUFiberHits = 0;
68  Int_t iNumVFiberHits = 0;
69 
70  m_iRPot = iRPot;
71  m_MapLayers.clear();
72 
73  std::list<MDHIT>::const_iterator iter;
74  for (iter=ListMDHits.begin(); iter!=ListMDHits.end(); ++iter)
75  {
76  if (iRPot == (*iter).iRPot)
77  {
78  if(m_MapLayers.find((*iter).iPlate)==m_MapLayers.end())
79  {
80  structFibers.ListFibers.clear();
81  m_MapLayers.insert(std::pair<int, FIBERS>((*iter).iPlate, structFibers));
82  m_MapLayers[(*iter).iPlate].ListFibers.push_back((*iter).iFiber);
83  }
84  else
85  {
86  m_MapLayers[(*iter).iPlate].ListFibers.push_back((*iter).iFiber);
87  }
88  }
89  }
90 
91  //Checking that the multiplicity cut conditions are satisfied
92  //At least more than UV_cut layers have a multiplicity lower than multi_cut
93  for (Int_t iLayer=0; iLayer<ALFALAYERSCNT*ALFAPLATESCNT; iLayer++)
94  {
95  if ((Int_t)m_MapLayers[iLayer].ListFibers.size()<=m_iMultiplicityCut && (Int_t)m_MapLayers[iLayer].ListFibers.size()>0)
96  {
97  if (fmod(double(iLayer),double(2)) == 1) iNumUFiberHits++;
98  else iNumVFiberHits++;
99  }
100  }
101 
102  m_fRecXPos = -9999.0;
103  m_fRecYPos = -9999.0;
104  m_fOverlapU = -9999.0;
105  m_fOverlapV = -9999.0;
106 
107  memset(&m_iFibSel, 0, sizeof(m_iFibSel));
108  std::fill_n(m_iFibSel, sizeof(m_iFibSel)/sizeof(Int_t), -9999);
109 
110  if (iNumUFiberHits>=m_iUVCut && iNumVFiberHits>=m_iUVCut) OverLap();
111 
112  ATH_MSG_DEBUG("end ALFA_MDTracking::Execute()");
113  return StatusCode::SUCCESS;
114 }
115 
116 StatusCode ALFA_MDTracking::Finalize(Float_t &fRecXPos, Float_t &fRecYPos)
117 {
118  ATH_MSG_DEBUG("begin ALFA_MDTracking::Finalize()");
119 
120  fRecXPos = m_fRecXPos;
121  fRecYPos = m_fRecYPos;
122 
123  ATH_MSG_DEBUG("end ALFA_MDTracking::Execute()");
124 
125  return StatusCode::SUCCESS;
126 }
127 
128 void ALFA_MDTracking::HistFill(Float_t &b_p, Float_t &b_n, Float_t &fOverP, Float_t &fOverN, Int_t &iNumU, Int_t &iNumV, Int_t iFlag)
129 {
130  ATH_MSG_DEBUG("begin ALFA_MDTracking::HistFill()");
131 
132  Int_t iHit;
133  Float_t fFibCen;
134  Float_t fbRef[2] = {-127.0, -127.0};
135  Float_t fXInter, fYInter;
136  Float_t fMinP, fMaxP;
137  Float_t fMinN, fMaxN;
138  Int_t iMinP_tmp, iMaxP_tmp;
139  Int_t iMinN_tmp, iMaxN_tmp;
140  Int_t iFullWidth;
141  const Int_t NBINTOT = 72000;
142  Int_t Over_p[NBINTOT], Over_n[NBINTOT];
143 
144  if (iFlag==0) //First call, Event not reconstructed for U and V
145  {
146  fbRef[0]=-127.0;
147  fbRef[1]=-127.0;
148  }
149 
150  if (iFlag==1) //Event reconstructed for U but not for V so let's try to refine
151  {
152  fbRef[0]=b_p;
153  fbRef[1]=-127.0;
154  }
155 
156  if (iFlag==2) //Event reconstructed for V but not for U so let's try to refine
157  {
158  fbRef[0]=-127.0;
159  fbRef[1]=b_n;
160  }
161 
162  if (iFlag==3) //Event reconstructed for U and V, ultime refinement
163  {
164  fbRef[0]=b_p;
165  fbRef[1]=b_n;
166  }
167 
168  for (Int_t iBin=0;iBin<72000;iBin++)
169  {
170  Over_p[iBin]=0;
171  Over_n[iBin]=0;
172  }
173 
175  for (Int_t iLayer=0; iLayer<ALFALAYERSCNT*ALFAPLATESCNT; iLayer++)
176  {
177  for (iter=m_MapLayers[iLayer].ListFibers.begin(); iter!=m_MapLayers[iLayer].ListFibers.end(); ++iter)
178  {
179  iHit = *iter;
180 
181  if (m_faMD[m_iRPot][iLayer][iHit]>=0)
182  {
183  fXInter = (fbRef[1]-m_fbMD[m_iRPot][iLayer][iHit])/(1+m_faMD[m_iRPot][iLayer][iHit]);
184  fYInter = (m_faMD[m_iRPot][iLayer][iHit]*fbRef[1]+m_fbMD[m_iRPot][iLayer][iHit])/(1+m_faMD[m_iRPot][iLayer][iHit])-fbRef[1];
185  fFibCen = (fYInter-fXInter)/sqrt(2.0);
186 
187  for (Int_t bin=0;bin<480;bin++)
188  {
189  Over_p[(int)((fFibCen-0.24)*1000)+bin+36000]++;
190  }
191  }
192  else
193  {
194  fXInter = (m_fbMD[m_iRPot][iLayer][iHit]-fbRef[0])/(1-m_faMD[m_iRPot][iLayer][iHit]);
195  fYInter = (m_fbMD[m_iRPot][iLayer][iHit]-m_faMD[m_iRPot][iLayer][iHit]*fbRef[0])/(1-m_faMD[m_iRPot][iLayer][iHit])-fbRef[0];
196  fFibCen = (fYInter+fXInter)/sqrt(2.0);
197 
198  for (Int_t bin=0;bin<480;bin++)
199  {
200  Over_n[(int)((fFibCen-0.24)*1000)+bin+36000]++;
201  }
202  }
203  }
204  }
205 
206  //Determine maximum
207  iNumU=0;
208  iNumV=0;
209 
210  std::vector<int> *vecMaxP = new std::vector<int>;
211  std::vector<int> *vecMaxN = new std::vector<int>;
212 
213  for (Int_t i=0;i<72000;i++)
214  {
215  if (Over_p[i]>iNumU) iNumU = Over_p[i];
216  if (Over_n[i]>iNumV) iNumV = Over_n[i];
217  }
218 
219  if (iNumU>=m_iUVCut) // If more than m_iUVCut fibers in the maximum we do the reconstruction
220  {
221  for (Int_t i=0; i<NBINTOT; i++)
222  {
223  if (Over_p[i]==iNumU)
224  {
225  vecMaxP->push_back(i);
226  }
227  }
228 
229  fMinP = -36.0 + double(vecMaxP->front())*1e-3;
230  fMaxP = -36.0 + double(vecMaxP->back())*1e-3;
231  iMinP_tmp = vecMaxP->front();
232  iMaxP_tmp = vecMaxP->back();
233 
234 // Making sure that the plateau belongs to the same track
235  iFullWidth = vecMaxP->size();
236 
237  for (Int_t i=0; i<iFullWidth; i++)
238  {
239  if (vecMaxP->at(iFullWidth-i-1)-iMinP_tmp < 500)
240  {
241  iMaxP_tmp = vecMaxP->at(iFullWidth-i-1);
242  fMaxP = -36.0 + double(iMaxP_tmp)*1e-3;
243  break;
244  }
245  }
246 
247  if ((fMaxP-fMinP)<m_fOverlapCut) //Check for multiple tracks
248  {
249  b_p = fbRef[1]+(fMinP+fMaxP)/sqrt(2.);
250  fOverP = fMaxP-fMinP;
251  }
252  else
253  {
254  b_p = -9999.0;
255  fOverP = -9999.0;
256  }
257  }
258  else
259  {
260  b_p = -9999.0;
261  fOverP = -9999.0;
262  }
263 
264  if (iNumV>=m_iUVCut) // If more than m_iUVCut fibers in the maximum we do the reconstruction
265  {
266  for (Int_t i=0; i<NBINTOT; i++)
267  {
268  if (Over_n[i]==iNumV)
269  {
270  vecMaxN->push_back(i);
271  }
272  }
273 
274  fMinN = -36.0 + double(vecMaxN->front())*1e-3;
275  fMaxN = -36.0 + double(vecMaxN->back())*1e-3;
276  iMinN_tmp = vecMaxN->front();
277  iMaxN_tmp = vecMaxN->back();
278 
279 // Making sure that the plateau belongs to the same track
280  iFullWidth = vecMaxN->size();
281 
282  for (Int_t i=0; i<iFullWidth; i++)
283  {
284  if (vecMaxN->at(iFullWidth-i-1)-iMinN_tmp < 500)
285  {
286  iMaxN_tmp = vecMaxN->at(iFullWidth-i-1);
287  fMaxN = -36.0 + double(iMaxN_tmp)*1e-3;
288  break;
289  }
290  }
291 
292  if ((fMaxN-fMinN)<m_fOverlapCut) //Check for multiple tracks
293  {
294  b_n = fbRef[0]+(fMinN+fMaxN)/sqrt(2.);
295  fOverN = fMaxN-fMinN;
296  }
297  else
298  {
299  b_n = -9999.0;
300  fOverN = -9999.0;
301  }
302  }
303  else
304  {
305  b_n = -9999.0;
306  fOverN = -9999.0;
307  }
308 
309 // if (b_p!=-9999.0 && b_n!=-9999.0)
310 // {
311 // if ((b_n+b_p)/2.0<=-135.5 && (iNumU>=m_iUVCut && iNumV>=m_iUVCut))
312 // {
313 // b_n = -9999.0;
314 // b_p = -9999.0;
315 // }
316 // }
317 
318  delete vecMaxP;
319  delete vecMaxN;
320 
321  ATH_MSG_DEBUG("endl ALFA_MDTracking::HistFill()");
322 }
323 
325 {
326  ATH_MSG_DEBUG("ALFA_MDTracking::OverLap()");
327 
328  Float_t fBMeanN = -9999.0;
329  Float_t fBMeanP = -9999.0;
330  Float_t fOverRegP;
331  Float_t fOverRegN;
332  Int_t iNumU, iNumV;
333 
334  //First call, projection on middle fiber for U and V
335  HistFill(fBMeanP, fBMeanN, fOverRegP, fOverRegN, iNumU, iNumV, 0);
336 
337  //If first projection worked, we do the ultimate one
338  if (fBMeanP!=-9999.0 && fBMeanN!=-9999.0)
339  {
340  HistFill(fBMeanP, fBMeanN, fOverRegP, fOverRegN, iNumU, iNumV, 3);
341  if (fBMeanP!=-9999.0 && fBMeanN!=-9999.0)
342  {
343  HistFill(fBMeanP, fBMeanN, fOverRegP, fOverRegN, iNumU, iNumV, 3);
344  }
345  }
346  else
347  {
348  //If first projection worked for p side but not for n, we try to refine n projection using the information from p side
349  if (fBMeanP!=-9999.0 && fBMeanN==-9999.0)
350  {
351  HistFill(fBMeanP, fBMeanN, fOverRegP, fOverRegN, iNumU, iNumV, 1);
352 
353  if (fBMeanP!=-9999.0 && fBMeanN!=-9999.0)
354  {
355  //if it as worked for both we do the ultimate one
356  HistFill(fBMeanP, fBMeanN, fOverRegP, fOverRegN, iNumU, iNumV, 3);
357  if (fBMeanP!=-9999.0 && fBMeanN!=-9999.0) HistFill(fBMeanP, fBMeanN, fOverRegP, fOverRegN, iNumU, iNumV, 3);
358  }
359  }
360 
361  //If first projection worked for p side but not for n, we try to refine n projection using the information from p side
362  if (fBMeanP==-9999.0 && fBMeanN!=-9999.0)
363  {
364  HistFill(fBMeanP, fBMeanN, fOverRegP, fOverRegN, iNumU, iNumV, 2);
365 
366  if (fBMeanP!=-9999.0 && fBMeanN!=-9999.0)
367  {
368  //if it as worked for both we do the ultimate one
369  HistFill(fBMeanP, fBMeanN, fOverRegP, fOverRegN, iNumU, iNumV, 3);
370  if (fBMeanP!=-9999.0 && fBMeanN!=-9999.0) HistFill(fBMeanP, fBMeanN, fOverRegP, fOverRegN, iNumU, iNumV, 3);
371  }
372  }
373  }
374 
375  Float_t fxTmp, fyTmp;
376  Float_t fMinX,fMinY;
377  Float_t fDistX,fDistY;
378 // Float_t fDistMinX,fDistMinY;
379  Int_t iHit;
380  Float_t fOverlapU, fOverlapV;
381  Int_t iFibSelX, iFibSelY;
382 
384  if (fBMeanP!=-9999.0 && fBMeanN!=-9999.0)
385  {
386  m_fRecXPos = (fBMeanN-fBMeanP)/2.0;
387  m_fRecYPos = (fBMeanN+fBMeanP)/2.0;
388  fOverlapU = fOverRegP;
389  fOverlapV = fOverRegN;
390 
391  for (Int_t iLayer=0; iLayer<ALFALAYERSCNT*ALFAPLATESCNT; iLayer++)
392  {
393  fMinX = 0.24/cos(TMath::Pi()/4.0);
394  fMinY = 0.24/cos(TMath::Pi()/4.0);
395 
396  iFibSelX = -9999, iFibSelY = -9999;
397  for (iter=m_MapLayers[iLayer].ListFibers.begin(); iter!=m_MapLayers[iLayer].ListFibers.end(); ++iter)
398  {
399  iHit = *iter;
400  fxTmp = (m_fRecYPos-m_fbMD[m_iRPot][iLayer][iHit])/m_faMD[m_iRPot][iLayer][iHit];
401  fyTmp = m_faMD[m_iRPot][iLayer][iHit]*m_fRecXPos+m_fbMD[m_iRPot][iLayer][iHit];
402  fDistX = TMath::Abs(m_fRecXPos-fxTmp);
403  fDistY = TMath::Abs(m_fRecYPos-fyTmp);
404 
405  if (fDistX<=fMinX)
406  {
407 // fDistMinX = m_fRecXPos-fxTmp;
408  fMinX = fDistX;
409  iFibSelX = iHit;
410  }
411 
412  if (fDistY<=fMinY)
413  {
414 // fDistMinY = m_fRecYPos-fyTmp;
415  fMinY = fDistY;
416  iFibSelY = iHit;
417  }
418  }
419 
420  if (iFibSelX==iFibSelY) m_iFibSel[iLayer] = iFibSelX;
421  }
422  }
423  else
424  {
425  m_fRecXPos = -9999.0;
426  m_fRecYPos = -9999.0;
427  iNumU = 0;
428  iNumV = 0;
429  fOverlapU = -9999.0;
430  fOverlapV = -9999.0;
431  }
432 
433  SetData(iNumU, iNumV, fOverlapU, fOverlapV);
434 
435  ATH_MSG_DEBUG("end ALFA_MDTracking::OverLap()");
436 }
437 
438 void ALFA_MDTracking::SetData(Int_t iNumU, Int_t iNumV, Float_t fOverlapU, Float_t fOverlapV)
439 {
440  ATH_MSG_DEBUG("begin ALFA_MDTracking::SetData()");
441 
442  m_iNumU = iNumU;
443  m_iNumV = iNumV;
444  m_fOverlapU = fOverlapU;
445  m_fOverlapV = fOverlapV;
446 
447  ATH_MSG_DEBUG("end ALFA_MDTracking::SetData()");
448 }
449 
450 void ALFA_MDTracking::GetData(Int_t &iNumU, Int_t &iNumV, Float_t &fOverlapU, Float_t &fOverlapV, Int_t (&iFibSel)[ALFALAYERSCNT*ALFAPLATESCNT])
451 {
452  ATH_MSG_DEBUG("begin ALFA_MDTracking::GetData()");
453 
454  iNumU = m_iNumU;
455  iNumV = m_iNumV;
456  fOverlapU = m_fOverlapU;
457  fOverlapV = m_fOverlapV;
458 
459  for (Int_t iLayer=0; iLayer<ALFALAYERSCNT*ALFAPLATESCNT; iLayer++)
460  {
461  iFibSel[iLayer] = m_iFibSel[iLayer];
462  }
463 
464  ATH_MSG_DEBUG("end ALFA_MDTracking::GetData()");
465 }
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
ALFA_MDTracking::Execute
StatusCode Execute(Int_t iRPot, const std::list< MDHIT > &ListMDHits)
Definition: ALFA_MDTracking.cxx:62
ALFA_MDTracking::m_iRPot
Int_t m_iRPot
Definition: ALFA_MDTracking.h:32
ALFA_MDTracking::ALFA_MDTracking
ALFA_MDTracking()
Definition: ALFA_MDTracking.cxx:7
ALFA_MDTracking::m_fOverlapCut
Float_t m_fOverlapCut
Definition: ALFA_MDTracking.h:34
ALFA_MDTracking::GetData
void GetData(Int_t &NumU, Int_t &NumV, Float_t &OL_U, Float_t &OL_V, Int_t(&iFibSel)[ALFALAYERSCNT *ALFAPLATESCNT])
Definition: ALFA_MDTracking.cxx:450
ALFA_MDTracking::m_fRecXPos
Float_t m_fRecXPos
Definition: ALFA_MDTracking.h:35
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
ALFA_MDTracking::Initialize
StatusCode Initialize(Float_t faMD[RPOTSCNT][ALFALAYERSCNT *ALFAPLATESCNT][ALFAFIBERSCNT], Float_t fbMD[RPOTSCNT][ALFALAYERSCNT *ALFAPLATESCNT][ALFAFIBERSCNT], Int_t iMultiplicityCut, Int_t iUVCut, Float_t fOverlapCut)
Definition: ALFA_MDTracking.cxx:37
ALFA_MDTracking::m_iMultiplicityCut
Int_t m_iMultiplicityCut
Definition: ALFA_MDTracking.h:30
ALFAFIBERSCNT
#define ALFAFIBERSCNT
Definition: ALFA_constants.h:10
_FIBERS
Definition: ALFA_LocRec/ALFA_UserObjects.h:30
ALFA_MDTracking::SetData
void SetData(Int_t NumU, Int_t NumV, Float_t OL_U, Float_t OL_V)
Definition: ALFA_MDTracking.cxx:438
bin
Definition: BinsDiffFromStripMedian.h:43
RPOTSCNT
#define RPOTSCNT
Definition: ALFA_CLinkAlg.h:26
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
ALFA_MDTracking::m_fbMD
Float_t m_fbMD[RPOTSCNT][ALFALAYERSCNT *ALFAPLATESCNT][ALFAFIBERSCNT]
Definition: ALFA_MDTracking.h:38
ALFA_MDTracking::m_fRecYPos
Float_t m_fRecYPos
Definition: ALFA_MDTracking.h:36
lumiFormat.i
int i
Definition: lumiFormat.py:85
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
ALFA_MDTracking::m_fOverlapV
double m_fOverlapV
Definition: ALFA_MDTracking.h:39
ALFA_MDTracking::m_faMD
Float_t m_faMD[RPOTSCNT][ALFALAYERSCNT *ALFAPLATESCNT][ALFAFIBERSCNT]
Definition: ALFA_MDTracking.h:37
AthMessaging
Class to provide easy MsgStream access and capabilities.
Definition: AthMessaging.h:55
ALFA_MDTracking.h
_FIBERS::ListFibers
std::list< int > ListFibers
Definition: ALFA_LocRec/ALFA_UserObjects.h:31
xAOD::double
double
Definition: CompositeParticle_v1.cxx:159
ALFA_MDTracking::m_fOverlapU
double m_fOverlapU
Definition: ALFA_MDTracking.h:39
ALFALAYERSCNT
#define ALFALAYERSCNT
Definition: ALFA_constants.h:8
ALFA_MDTracking::m_iFibSel
Int_t m_iFibSel[ALFALAYERSCNT *ALFAPLATESCNT]
Definition: ALFA_MDTracking.h:40
ALFA_MDTracking::m_iUVCut
Int_t m_iUVCut
Definition: ALFA_MDTracking.h:31
ALFA_MDTracking::HistFill
void HistFill(Float_t &b_p, Float_t &b_n, Float_t &Ov_p, Float_t &Ov_n, Int_t &NumU, Int_t &NumV, Int_t iFlag)
Definition: ALFA_MDTracking.cxx:128
ALFA_MDTracking::m_iNumV
Int_t m_iNumV
Definition: ALFA_MDTracking.h:33
ALFA_MDTracking::m_MapLayers
std::map< int, FIBERS > m_MapLayers
Definition: ALFA_MDTracking.h:43
ALFA_MDTracking::m_iNumU
Int_t m_iNumU
Definition: ALFA_MDTracking.h:33
ALFA_MDTracking::Finalize
StatusCode Finalize(Float_t &fRecXPos, Float_t &fRecYPos)
Definition: ALFA_MDTracking.cxx:116
ALFA_MDTracking::OverLap
void OverLap()
Definition: ALFA_MDTracking.cxx:324
ALFAPLATESCNT
#define ALFAPLATESCNT
Definition: ALFA_constants.h:9
ALFA_MDTracking::~ALFA_MDTracking
~ALFA_MDTracking()
Definition: ALFA_MDTracking.cxx:31