AliRoot Core  edcc906 (edcc906)
AliEMCALDigit.cxx
Go to the documentation of this file.
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  * *
4  * Author: The ALICE Off-line Project. *
5  * Contributors are mentioned in the code where appropriate. *
6  * *
7  * Permission to use, copy, modify and distribute this software and its *
8  * documentation strictly for non-commercial purposes is hereby granted *
9  * without fee, provided that the above copyright notice appears in all *
10  * copies and that both the copyright notice and this permission notice *
11  * appear in the supporting documentation. The authors make no claims *
12  * about the suitability of this software for any purpose. It is *
13  * provided "as is" without express or implied warranty. *
14  **************************************************************************/
15 
16 // --- ROOT system ---
17 #include <Riostream.h>
18 #include <TMath.h>
19 
20 // --- AliRoot header files ---
21 
22 #include "AliEMCALDigit.h"
23 #include "AliEMCALGeometry.h"
24 #include "AliLog.h"
25 
26 using std::cout;
27 using std::endl;
28 
30 ClassImp(AliEMCALDigit) ;
32 
35 //____________________________________________________________________________
37 AliDigitNew(),
38  fAmpFloat(0.),
39  fNSamples(0),
40  fSamples(0x0),
41  fNSamplesHG(0),
42  fSamplesHG(0x0),
43  fNprimary(0),
44  fNMaxPrimary(5),
45  fPrimary(0x0),
46  fDEPrimary(0x0),
47  fNiparent(0),
48  fNMaxiparent(5),
49  fIparent(0x0),
50  fDEParent(0x0),
51  fMaxIter(0),
52  fTime(0.),
53  fTimeR(0.),
54  fChi2(0.),
55  fNDF(0),
56  fDigitType(kUnknown),
57  fAmpCalib(-1)
58 {
59  // Need to initialise for reading old files
60  fPrimary = new Int_t [fNMaxPrimary] ;
61  fDEPrimary = new Float_t[fNMaxPrimary] ;
62  fIparent = new Int_t [fNMaxiparent] ;
63  fDEParent = new Float_t[fNMaxiparent] ;
64 
65  for ( Int_t i = 0; i < fNMaxPrimary ; i++)
66  {
67  fPrimary[i] = -1 ;
68  fDEPrimary[i] = 0 ;
69  }
70 
71  for ( Int_t i = 0; i < fNMaxiparent ; i++)
72  {
73  fIparent[i] = -1 ;
74  fDEParent[i] = 0 ;
75  }
76 }
77 
91 //____________________________________________________________________________
92 AliEMCALDigit::AliEMCALDigit(Int_t primary, Int_t iparent, Int_t id,
93  Float_t digEnergy, Float_t time,
94  Int_t type, Int_t index, Float_t chi2,
95  Int_t ndf, Float_t dE)
96  : AliDigitNew(),
97  fAmpFloat(digEnergy),
98  fNSamples(0),
99  fSamples(0x0),
100  fNSamplesHG(0),
101  fSamplesHG(0x0),
102  fNprimary(0),
103  fNMaxPrimary(25),
104  fPrimary(0x0),
105  fDEPrimary(0x0),
106  fNiparent(0),
107  fNMaxiparent(150),
108  fIparent(0x0),
109  fDEParent(0x0),
110  fMaxIter(5),
111  fTime(time),
112  fTimeR(time),
113  fChi2(chi2),
114  fNDF(ndf),
115  fDigitType(type),
116  fAmpCalib(-1)
117 {
118  // data members of the base class (AliNewDigit)
119  fAmp = 0;
120  fId = id ;
121  fIndexInList = index ;
122 
123  // data member
124  fPrimary = new Int_t [fNMaxPrimary] ;
125  fDEPrimary = new Float_t[fNMaxPrimary] ;
126  fIparent = new Int_t [fNMaxiparent] ;
127  fDEParent = new Float_t[fNMaxiparent] ;
128 
129  if( primary != -1)
130  {
131  fNprimary = 1 ;
132  fPrimary [0] = primary ;
133  fDEPrimary[0] = dE ;
134  fNiparent = 1 ;
135  fIparent [0] = iparent ;
136  fDEParent [0] = dE ;
137  }
138  else
139  {
140  // If the contribution of this primary smaller than fDigitThreshold (AliEMCALv1)
141  fNprimary = 0 ;
142  fPrimary [0] = -1 ;
143  fDEPrimary[0] = 0 ;
144  fNiparent = 0 ;
145  fIparent [0] = -1 ;
146  fDEParent [0] = 0 ;
147  }
148 
149  Int_t i ;
150  for ( i = 1; i < fNMaxPrimary ; i++)
151  {
152  fPrimary [i] = -1 ;
153  fDEPrimary[i] = 0 ;
154  }
155 
156  for ( i = 1; i< fNMaxiparent ; i++)
157  {
158  fIparent [i] = -1 ;
159  fDEParent[i] = 0 ;
160  }
161 }
162 
165 //____________________________________________________________________________
167  : AliDigitNew(digit),
168  fAmpFloat(digit.fAmpFloat),
169  fNSamples(digit.fNSamples),
170  fSamples(),
171  fNSamplesHG(digit.fNSamplesHG),
172  fSamplesHG(),
173  fNprimary(digit.fNprimary),
174  fNMaxPrimary(digit.fNMaxPrimary),
175  fPrimary(),
176  fDEPrimary(),
177  fNiparent(digit.fNiparent),
178  fNMaxiparent(digit.fNMaxiparent),
179  fIparent(),
180  fDEParent(),
181  fMaxIter(digit.fMaxIter),
182  fTime(digit.fTime),
183  fTimeR(digit.fTimeR),
184  fChi2(digit.fChi2),
185  fNDF(digit.fNDF),
186  fDigitType(digit.fDigitType),
187  fAmpCalib(digit.fAmpCalib)
188 {
189  // data members of the base class (AliNewDigit)
190  fAmp = digit.fAmp ;
191  fId = digit.fId;
192  fIndexInList = digit.fIndexInList ;
193 
194  // data members
195  if (fSamples ) delete [] fSamples ; fSamples = NULL ;
196  if (fSamplesHG ) delete [] fSamplesHG ; fSamplesHG = NULL ;
197  if (fPrimary ) delete [] fPrimary ; fPrimary = NULL ;
198  if (fDEPrimary) delete [] fDEPrimary ; fDEPrimary = NULL ;
199  if (fIparent ) delete [] fIparent ; fIparent = NULL ;
200  if (fDEParent) delete [] fDEParent ; fDEParent = NULL ;
201 
202  if (fNSamples)
203  {
204  fSamples = new Int_t[fNSamples];
205  for (Int_t i=0; i < digit.fNSamples; i++) fSamples[i] = digit.fSamples[i];
206  }
207 
208  if (fNSamplesHG)
209  {
210  fSamplesHG = new Int_t[fNSamplesHG];
211  for (Int_t i=0; i < digit.fNSamplesHG; i++) fSamplesHG[i] = digit.fSamplesHG[i];
212  }
213 
214 
215  if (fNMaxPrimary)
216  {
217  fPrimary = new Int_t [fNMaxPrimary] ;
218  fDEPrimary = new Float_t[fNMaxPrimary] ;
219 
220  for ( Int_t i = 0; i < fNMaxPrimary ; i++)
221  {
222  fPrimary[i] = digit.fPrimary[i] ;
223  fDEPrimary[i] = digit.fDEPrimary[i] ;
224  }
225  }
226 
227  if (fNMaxiparent)
228  {
229  fIparent = new Int_t [fNMaxiparent] ;
230  fDEParent = new Float_t[fNMaxiparent] ;
231 
232  for (Int_t j = 0; j< fNMaxiparent ; j++)
233  {
234  fIparent[j] = digit.fIparent[j] ;
235  fDEParent[j] = digit.fDEParent[j] ;
236  }
237  }
238 }
239 
243 //____________________________________________________________________________
245 {
246  if (fSamples ) delete [] fSamples ; fSamples = NULL ;
247  if (fSamplesHG ) delete [] fSamplesHG ; fSamplesHG = NULL ;
248  if (fPrimary ) delete [] fPrimary ; fPrimary = NULL ;
249  if (fDEPrimary) delete [] fDEPrimary ; fDEPrimary = NULL ;
250  if (fIparent ) delete [] fIparent ; fIparent = NULL ;
251  if (fDEParent) delete [] fDEParent ; fDEParent = NULL ;
252 }
253 
257 //____________________________________________________________________________
258 void AliEMCALDigit::Clear(Option_t*)
259 {
260  if (fSamples ) delete [] fSamples ; fSamples = NULL ;
261  if (fSamplesHG ) delete [] fSamplesHG ; fSamplesHG = NULL ;
262  if (fPrimary ) delete [] fPrimary ; fPrimary = NULL ;
263  if (fDEPrimary) delete [] fDEPrimary ; fDEPrimary = NULL ;
264  if (fIparent ) delete [] fIparent ; fIparent = NULL ;
265  if (fDEParent) delete [] fDEParent ; fDEParent = NULL ;
266 }
267 
268 
271 //____________________________________________________________________________
272 Float_t AliEMCALDigit::GetEta() const
273 {
274  Float_t eta=-10., phi=-10.;
275  Int_t id = GetId();
276 
278  g->EtaPhiFromIndex(id,eta,phi);
279 
280  return eta ;
281 }
282 
285 //____________________________________________________________________________
286 Float_t AliEMCALDigit::GetPhi() const
287 {
288  Float_t eta=-10., phi=-10.;
289  Int_t id = GetId();
290 
292  g->EtaPhiFromIndex(id,eta,phi);
293 
294  return phi ;
295 }
296 
305 //____________________________________________________________________________
306 Bool_t AliEMCALDigit::GetFALTROSample(const Int_t iSample, Int_t& timeBin, Int_t& amp) const
307 {
308  if (iSample >= fNSamples || iSample < 0 || fDigitType==kTrigger) return kFALSE;
309 
310  amp = fSamples[iSample] & 0xFFF;
311  timeBin = (fSamples[iSample] >> 12) & 0xFF;
312 
313  return kTRUE;
314 }
315 
324 //____________________________________________________________________________
325 Bool_t AliEMCALDigit::GetALTROSampleLG(const Int_t iSample, Int_t& timeBin, Int_t& amp) const
326 {
327  if (iSample >= fNSamples || iSample < 0 || fDigitType==kLG) return kFALSE;
328 
329  amp = fSamples[iSample] & 0xFFF;
330  timeBin = (fSamples[iSample] >> 12) & 0xFF;
331 
332  return kTRUE;
333 }
334 
337 //____________________________________________________________________________
338 void AliEMCALDigit::SetALTROSamplesLG(const Int_t nSamples, Int_t *samples)
339 {
340  fNSamples = nSamples;
341 
342  fSamples = new Int_t[fNSamples];
343 
344  for (Int_t i=0; i < fNSamples; i++) fSamples[i] = samples[i];
345 }
346 
349 //____________________________________________________________________________
350 void AliEMCALDigit::SetALTROSamplesHG(const Int_t nSamples, Int_t *samples)
351 {
352  fNSamplesHG = nSamples;
353 
354  fSamplesHG = new Int_t[fNSamplesHG];
355 
356  for (Int_t i=0; i < fNSamplesHG; i++) fSamplesHG[i] = samples[i];
357 }
358 
367 //____________________________________________________________________________
368 Bool_t AliEMCALDigit::GetALTROSampleHG(const Int_t iSample, Int_t& timeBin, Int_t& amp) const
369 {
370  if (iSample >= fNSamplesHG || iSample < 0 || fDigitType==kHG) return kFALSE;
371 
372  amp = fSamplesHG[iSample] & 0xFFF;
373  timeBin = (fSamplesHG[iSample] >> 12) & 0xFF;
374 
375  return kTRUE;
376 }
377 
380 //____________________________________________________________________________
381 Int_t AliEMCALDigit::GetPrimary(Int_t index) const
382 {
383  if ( (index <= fNprimary) && (index > 0) )
384  return fPrimary[index-1] ;
385 
386  return -1 ;
387 }
388 
391 //____________________________________________________________________________
392 Float_t AliEMCALDigit::GetDEPrimary(Int_t index) const
393 {
394  if ( (index <= fNprimary) && (index > 0) )
395  return fDEPrimary[index-1] ;
396 
397  return 0 ;
398 }
399 
402 //____________________________________________________________________________
403 Int_t AliEMCALDigit::GetIparent(Int_t index) const
404 {
405  if ( index <= fNiparent && index > 0)
406  return fIparent[index-1] ;
407 
408  return -1 ;
409 }
410 
413 //____________________________________________________________________________
414 Float_t AliEMCALDigit::GetDEParent(Int_t index) const
415 {
416  if ( (index <= fNiparent) && (index > 0))
417  return fDEParent[index-1] ;
418 
419  return 0;
420 }
421 
424 //____________________________________________________________________________
426 {
427  Int_t index ;
428  for(index = 0; index <fNprimary; index++ ){
429  fPrimary[index] = fPrimary[index]+ shift; } // * 10000000 ;}
430 
431  for(index =0; index <fNiparent; index++){
432  fIparent[index] = fIparent[index] + shift; }// * 10000000 ;}
433 }
434 
437 //____________________________________________________________________________
439 {
440  if(&digit == this) return *this;
441 
442  fAmpFloat = digit.fAmpFloat;
443  fNSamples = digit.fNSamples;
444  fNSamplesHG = digit.fNSamplesHG;
445  fNprimary = digit.fNprimary;
446  fNMaxPrimary = digit.fNMaxPrimary;
447  fNiparent = digit.fNiparent;
448  fNMaxiparent = digit.fNMaxiparent;
449  fMaxIter = digit.fMaxIter;
450  fTime = digit.fTime;
451  fTimeR = digit.fTimeR;
452  fChi2 = digit.fChi2;
453  fNDF = digit.fNDF;
454  fDigitType = digit.fDigitType;
455  fAmpCalib = digit.fAmpCalib;
456  fAmp = digit.fAmp ;
457  fId = digit.fId;
458  fIndexInList = digit.fIndexInList ;
459 
460  // data members
461  if (fSamples ) delete [] fSamples ; fSamples = NULL ;
462  if (fSamplesHG ) delete [] fSamplesHG ; fSamplesHG = NULL ;
463  if (fPrimary ) delete [] fPrimary ; fPrimary = NULL ;
464  if (fDEPrimary) delete [] fDEPrimary ; fDEPrimary = NULL ;
465  if (fIparent ) delete [] fIparent ; fIparent = NULL ;
466  if (fDEParent) delete [] fDEParent ; fDEParent = NULL ;
467 
468  if (fNSamples)
469  {
470  fSamples = new Int_t[fNSamples];
471  for (Int_t i=0; i < digit.fNSamples; i++) fSamples[i] = digit.fSamples[i];
472  }
473 
474  if (fNSamplesHG)
475  {
476  fSamplesHG = new Int_t[fNSamplesHG];
477  for (Int_t i=0; i < digit.fNSamplesHG; i++) fSamplesHG[i] = digit.fSamplesHG[i];
478  }
479 
480 
481  if (fNMaxPrimary)
482  {
483  fPrimary = new Int_t [fNMaxPrimary] ;
484  fDEPrimary = new Float_t[fNMaxPrimary] ;
485 
486  for ( Int_t i = 0; i < fNMaxPrimary ; i++)
487  {
488  fPrimary[i] = digit.fPrimary[i] ;
489  fDEPrimary[i] = digit.fDEPrimary[i] ;
490  }
491  }
492 
493  if (fNMaxiparent)
494  {
495  fIparent = new Int_t [fNMaxiparent] ;
496  fDEParent = new Float_t[fNMaxiparent] ;
497 
498  for (Int_t j = 0; j< fNMaxiparent ; j++)
499  {
500  fIparent[j] = digit.fIparent[j] ;
501  fDEParent[j] = digit.fDEParent[j] ;
502  }
503  }
504 
505  return *this;
506 }
507 
510 //____________________________________________________________________________
511 Bool_t AliEMCALDigit::operator==(AliEMCALDigit const & digit) const
512 {
513  if ( fId == digit.fId )
514  return kTRUE ;
515  else
516  return kFALSE ;
517 }
518 
522 //____________________________________________________________________________
524 {
525  fAmpFloat += digit.fAmpFloat ;
526 
527  for (Int_t i=0; i < fNSamples ; i++) fSamples[i] += digit.fSamples[i];
528  for (Int_t i=0; i < fNSamplesHG; i++) fSamplesHG[i] += digit.fSamplesHG[i];
529 
530  fAmp += digit.fAmp ;
531 
532  if(fTime > digit.fTime)
533  fTime = digit.fTime ;
534  if (digit.fTimeR < fTimeR)
535  fTimeR = digit.fTimeR ;
536 
537  Int_t max1 = fNprimary ;
538  Int_t max2 = fNiparent ;
539  Int_t index ;
540  for (index = 0 ; index < digit.fNprimary ; index++)
541  {
542  Bool_t newPrim = kTRUE ;
543  Int_t old ;
544  for ( old = 0 ; (old < max1) && newPrim; old++)
545  {
546  // already have this primary?
547  if(fPrimary[old] == digit.fPrimary[index])
548  {
549  newPrim = kFALSE;
550  fDEPrimary[old] += digit.fDEPrimary[index];
551  }
552  }
553 
554  if (newPrim)
555  {
556  if(max1<fNMaxPrimary)
557  {
558  fPrimary [max1] = digit.fPrimary [index] ;
559  fDEPrimary[max1] = digit.fDEPrimary[index] ;
560  fNprimary++ ;
561  max1++;
562  }
563 
564  if(fNprimary==fNMaxPrimary)
565  {
566  TString mess = " NMaxPrimary = " ;
567  mess += fNMaxPrimary ;
568  mess += " is too small" ;
569  AliFatal(mess.Data()) ;
570  }
571  }
572  }
573 
574  for (index = 0 ; index < digit.fNiparent ; index++)
575  {
576  Bool_t newParent = kTRUE ;
577  Int_t old ;
578  for ( old = 0 ; (old < max2) && newParent; old++)
579  {
580  // already have this primary?
581  if(fIparent[old] == digit.fIparent [index])
582  {
583  newParent = kFALSE;
584  fDEParent[old] += digit.fDEParent[index];
585  }
586  }
587 
588  if(newParent)
589  {
590  if(max2<fNMaxiparent)
591  {
592  fIparent [max2] = digit.fIparent [index] ;
593  fDEParent[max2] = digit.fDEParent[index] ;
594  fNiparent++ ;
595  max2++;
596  }
597 
598  if(fNiparent==fNMaxiparent)
599  {
600  TString mess = " NMaxiparent = " ;
601  mess += fNMaxiparent ;
602  mess += " is too small" ;
603  AliFatal(mess.Data()) ;
604  }
605  }
606  }
607 
608  return *this ;
609 }
610 
613 //____________________________________________________________________________
615 {
616  //Float_t tempo = static_cast<Float_t>(fAmp) ;
617  //tempo *= factor ;
618  //fAmp = static_cast<Int_t>(TMath::Floor(tempo)) ;
619 
620  fAmpFloat *= factor;
621 
622  for (Int_t i=0; i < fNSamples ; i++) fSamples[i] = Int_t(factor*fSamples[i]);
623  for (Int_t i=0; i < fNSamplesHG; i++) fSamplesHG[i] = Int_t(factor*fSamplesHG[i]);
624 
625  for(Int_t i=0; i < fNprimary; i++)
626  fDEPrimary[i] *= factor;
627  for(Int_t i=0; i < fNiparent; i++)
628  fDEParent[i] *= factor;
629 
630  return *this ;
631 }
632 
635 //____________________________________________________________________________
636 ostream& operator << ( ostream& out , const AliEMCALDigit & digit)
637 {
638  out << "ID " << digit.fId << " Energy = " << digit.fAmp << " Time = " << digit.fTime << endl ;
639 
640  for(Int_t i=0;i<digit.fNprimary;i++)
641  out << "Primary " << i+1 << " = " << digit.fPrimary[i]
642  << " : DE " << digit.fDEPrimary[i] << endl ;
643 
644  for(Int_t j=0;j<digit.fNiparent;j++)
645  out << "Iparent " << j+1 << " = " << digit.fIparent[j]
646  << " : DE " << digit.fDEParent[j] << endl ;
647  out << "Position in list = " << digit.fIndexInList << endl ;
648 
649  return out ;
650 }
651 
654 //____________________________________________________________________________
655 void AliEMCALDigit::Print(const Option_t* /*opt*/) const
656 {
657  printf("===\nDigit id: %4d / Energy %2.3f ; Time %e ; Time samples %d ; Chi2 %2.3f, NDF %d, Type? %d \n",
659 
660  if(fDigitType==kTrigger)
661  {
662  printf("FALTRO: ");
663  for (Int_t i=0; i < GetNFALTROSamples(); i++)
664  {
665  Int_t timeBin, amp;
666  GetFALTROSample(i, timeBin, amp);
667  printf(" (%d,%d) ",timeBin,amp);
668  }
669  printf("\n");
670  }//trigger
671  else
672  {
673  printf("ALTRO, Low Gain: ");
674  for (Int_t i=0; i < GetNALTROSamplesLG(); i++)
675  {
676  Int_t timeBin, amp;
677  GetALTROSampleLG(i, timeBin, amp);
678  printf(" (%d,%d) ",timeBin,amp);
679  }
680  printf("\n");
681 
682  printf("ALTRO, High Gain: ");
683  for (Int_t i=0; i < GetNALTROSamplesHG(); i++)
684  {
685  Int_t timeBin, amp;
686  GetALTROSampleHG(i, timeBin, amp);
687  printf(" (%d,%d) ",timeBin,amp);
688  }
689  printf("\n");
690  }//trigger
691 }
692 
700 //______________________________________________________________________________
701 void AliEMCALDigit::SetListOfPrimaries(Int_t npri, Int_t * prilist, Float_t * edepList)
702 {
703  if ( npri <= 0 || !prilist || !edepList )
704  {
705  AliError(Form("Null number of entries (%d) or null lists (%p,%p), do not set!",npri,prilist,edepList));
706  return;
707  }
708 
709  fNprimary = npri;
710 
711  if ( fPrimary ) delete [] fPrimary ; fPrimary = NULL;
712  if ( fDEPrimary ) delete [] fDEPrimary; fDEPrimary = NULL;
713 
714  fPrimary = new Int_t [fNprimary];
715  fDEPrimary = new Float_t[fNprimary];
716 
717  for(Int_t ipri = 0; ipri < npri; ipri++)
718  {
719  fPrimary [ipri] = prilist [ipri];
720  fDEPrimary[ipri] = edepList[ipri];
721  }
722 }
723 
731 //______________________________________________________________________________
732 void AliEMCALDigit::SetListOfParents(Int_t npar, Int_t * parlist, Float_t * edepList)
733 {
734  if ( npar <= 0 || !parlist || !edepList )
735  {
736  AliError(Form("Null number of entries (%d) or null lists (%p,%p), do not set!",npar,parlist,edepList));
737  return;
738  }
739 
740  fNiparent = npar;
741 
742  if ( fIparent ) delete [] fIparent ; fIparent = NULL;
743  if ( fDEParent ) delete [] fDEParent; fDEParent = NULL;
744 
745  fIparent = new Int_t [fNiparent];
746  fDEParent = new Float_t[fNiparent];
747 
748  for(Int_t ipar = 0; ipar < npar; ipar++)
749  {
750  fIparent [ipar] = parlist [ipar];
751  fDEParent[ipar] = edepList[ipar];
752  }
753 }
754 
755 
Float_t GetPhi() const
printf("Chi2/npoints = %f\n", TMath::Sqrt(chi2/npoints))
void Clear(Option_t *)
Float_t GetDEParent(Int_t index) const
Int_t fNprimary
Number of primaries.
Float_t * fDEParent
Array of parent energy contributions.
AliEMCALDigit operator+(const AliEMCALDigit &rValue)
Int_t * fPrimary
Array of primary labels.
AliEMCALDigit()
Default Constructor.
Int_t * fSamples
List of time bin constents, Low Gain for ALTRO, used also for FALTRO.
Float_t fAmpFloat
Cell amplitude, float.
Float_t GetEta() const
void EtaPhiFromIndex(Int_t absId, Double_t &eta, Double_t &phi) const
Float_t fChi2
Fit quality parameter, chi square.
Int_t fIndexInList
Definition: AliDigitNew.h:31
Int_t fMaxIter
Number to Increment Maxiparent, and MaxPrimary if default is not sufficient.
Int_t * fSamplesHG
List of time bin constents, High Gain for ALTRO, used also for FALTRO.
Float_t fTime
Calculated time.
AliEMCALDigit operator*(Float_t factor)
Multiplies the amplitude by a factor.
EMCal digits object.
Definition: AliEMCALDigit.h:30
Int_t GetIparent(Int_t index) const
Int_t GetNALTROSamplesHG() const
Definition: AliEMCALDigit.h:88
Int_t GetNALTROSamplesLG() const
Definition: AliEMCALDigit.h:86
virtual ~AliEMCALDigit()
Bool_t operator==(const AliEMCALDigit &rValue) const
Two digits are equal if they have the same Id.
Float_t * fDEPrimary
Array of primary energy contributions.
Double_t chi2
Definition: AnalyzeLaser.C:7
Bool_t GetALTROSampleHG(const Int_t iSample, Int_t &timeBin, Int_t &amp) const
Int_t fDigitType
This is a trigger digit(0), HG (1) or LG (3)
Float_t GetDEPrimary(Int_t index) const
friend ostream & operator<<(ostream &, const AliEMCALDigit &)
Prints the data of the digit.
Int_t GetNFALTROSamples() const
Definition: AliEMCALDigit.h:92
Float_t fAmpCalib
Calibrated energy.
Int_t fNDF
Fit quality parameter, number of Degrees of Freedom.
Bool_t GetALTROSampleLG(const Int_t iSample, Int_t &timeBin, Int_t &amp) const
void ShiftPrimary(Int_t shift)
Shifts primary number to BIG offset, to separate primary in different TreeK.
void SetListOfPrimaries(Int_t npri, Int_t *prilist, Float_t *edepList)
Bool_t GetFALTROSample(const Int_t iSample, Int_t &timeBin, Int_t &amp) const
Int_t fNMaxPrimary
Max Number of primaries.
#define AliFatal(message)
Definition: AliLog.h:640
void SetALTROSamplesHG(const Int_t nSamplesHG, Int_t *samplesHG)
Set array of ALTRO samples, High Gain.
Int_t fNiparent
Number of initial parents.
Int_t * fIparent
Array of parents labels.
Int_t GetPrimary(Int_t index) const
Float_t fTimeR
Earliest time: to be used by Digits2Raw.
Int_t GetId() const
Definition: AliDigitNew.h:23
Int_t fNMaxiparent
Max Number of parents.
void Print(const Option_t *) const
Dump digit info.
#define AliError(message)
Definition: AliLog.h:591
static AliEMCALGeometry * GetInstance()
Int_t fNSamples
Number of time samples, Low Gain for ALTRO, used also for FALTRO.
for(Int_t itree=0;itree< arrInputTreesDistortionCalib->GetEntriesFast();++itree)
void SetALTROSamplesLG(const Int_t nSamplesLG, Int_t *samplesLG)
Set array of ALTRO samples, Low Gain or FALTRO.
void SetListOfParents(Int_t npar, Int_t *parlist, Float_t *edepList)
Int_t fNSamplesHG
Number of time samples, High Gain for ALTRO.
EMCal geometry, singleton.
AliEMCALDigit & operator=(const AliEMCALDigit &digit)
Assignment operator.
Int_t fAmp
Definition: AliDigitNew.h:29