]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - FMD/AliFMDDigit.cxx
Increased error checking and possibility to extract some diagnostics
[u/mrichter/AliRoot.git] / FMD / AliFMDDigit.cxx
index a2c9cc67c6396a1efed7316633bb32d3aa91d3a6..4369cffdaa076ac27a26fc5466e5a5ffe8c29074 100644 (file)
 #include <TString.h>
 
 //====================================================================
-ClassImp(AliFMDBaseDigit)
+ClassImp(AliFMDDigit)
 #if 0
-  ; // This is here to keep Emacs from indenting the next line
+; // Here to make Emacs happy
 #endif
 
-//____________________________________________________________________
-AliFMDBaseDigit::AliFMDBaseDigit()
-  : fDetector(0), 
-    fRing('\0'), 
-    fSector(0), 
-    fStrip(0)
-{}
-
-//____________________________________________________________________
-AliFMDBaseDigit::AliFMDBaseDigit(UShort_t detector, 
-                        Char_t   ring, 
-                        UShort_t sector, 
-                        UShort_t strip)
-  : fDetector(detector), 
-    fRing(ring), 
-    fSector(sector), 
-    fStrip(strip)
-{
-  //
-  // Creates a base data digit object
-  //
-  // Parameters 
-  //
-  //    detector  Detector # (1, 2, or 3)                      
-  //    ring     Ring ID ('I' or 'O')
-  //    sector   Sector # (For inner/outer rings: 0-19/0-39)
-  //    strip    Strip # (For inner/outer rings: 0-511/0-255)
-}
-
-//____________________________________________________________________
-void
-AliFMDBaseDigit::Print(Option_t* /* option*/) const 
-{
-  // Print digit to standard out 
-  cout << ClassName() << ": FMD" << fDetector << fRing << "[" 
-       << setw(3) << fSector << ","
-       << setw(3) << fStrip << "]" 
-       << flush;
-}
-
-//____________________________________________________________________
-const char*
-AliFMDBaseDigit::GetName() const 
-{ 
-  static TString n;
-  n = Form("FMD%d%c[%2d,%3d]", fDetector, fRing, fSector, fStrip);
-  return n.Data();
-}
-
-//====================================================================
-ClassImp(AliFMDDigit)
-
 //____________________________________________________________________
 AliFMDDigit::AliFMDDigit()
   : fCount1(0),
     fCount2(-1),
-    fCount3(-1)
-{}
+    fCount3(-1),
+    fCount4(-1)
+{
+  // CTOR
+}
 
 //____________________________________________________________________
-AliFMDDigit::AliFMDDigit(UShort_t detector, 
-                        Char_t   ring, 
-                        UShort_t sector, 
-                        UShort_t strip, 
-                        UShort_t count1,
-                        Short_t  count2, 
-                        Short_t  count3)
+AliFMDDigit::AliFMDDigit(UShort_t       detector, 
+                        Char_t         ring, 
+                        UShort_t       sector, 
+                        UShort_t       strip, 
+                        UShort_t       count1,
+                        Short_t        count2, 
+                        Short_t        count3,
+                        Short_t        count4, 
+                        UShort_t       nrefs,
+                        const Int_t*   refs)
   : AliFMDBaseDigit(detector, ring, sector, strip), 
     fCount1(count1),
     fCount2(count2),
-    fCount3(count3)
+    fCount3(count3), 
+    fCount4(count4)
 {
   //
   // Creates a real data digit object
@@ -156,12 +111,15 @@ AliFMDDigit::AliFMDDigit(UShort_t detector,
   //    count1    ADC count (a 10-bit word)
   //    count2    ADC count (a 10-bit word) -1 if not used
   //    count3    ADC count (a 10-bit word) -1 if not used
+  if (!refs) return;
+  for (Int_t i = 0; i < nrefs; i++) AddTrack(refs[i]);
 }
 
 //____________________________________________________________________
 const char*
 AliFMDDigit::GetTitle() const 
 { 
+  // Get the title 
   static TString t;
   t = Form("ADC: %d", Counts());
   return t.Data();
@@ -169,65 +127,23 @@ AliFMDDigit::GetTitle() const
 
 //____________________________________________________________________
 void
-AliFMDDigit::Print(Option_t* /* option*/) const 
-{
-  // Print digit to standard out 
-  AliFMDBaseDigit::Print();
-  cout << "\t" 
-       << fCount1 << " (+ " << fCount2 << " + " << fCount2 << ") = " 
-       << Counts() << endl;
-}
-
-//====================================================================
-ClassImp(AliFMDSDigit)
-
-//____________________________________________________________________
-AliFMDSDigit::AliFMDSDigit()
-  : fEdep(0), 
-    fCount1(0),
-    fCount2(-1),
-    fCount3(-1)
-{}
-
-//____________________________________________________________________
-AliFMDSDigit::AliFMDSDigit(UShort_t detector, 
-                          Char_t   ring, 
-                          UShort_t sector, 
-                          UShort_t strip, 
-                          Float_t  edep,
-                          UShort_t count1,
-                          Short_t  count2, 
-                          Short_t  count3)
-  : AliFMDBaseDigit(detector, ring, sector, strip), 
-    fEdep(edep),
-    fCount1(count1),
-    fCount2(count2),
-    fCount3(count3)
-{
-  //
-  // Creates a real data digit object
-  //
-  // Parameters 
-  //
-  //    detector  Detector # (1, 2, or 3)                      
-  //    ring     Ring ID ('I' or 'O')
-  //    sector   Sector # (For inner/outer rings: 0-19/0-39)
-  //    strip    Strip # (For inner/outer rings: 0-511/0-255)
-  //    edep      Total energy deposited 
-  //    count1    ADC count (a 10-bit word)
-  //    count2    ADC count (a 10-bit word) -1 if not used
-  //    count3    ADC count (a 10-bit word) -1 if not used
-}
-
-//____________________________________________________________________
-void
-AliFMDSDigit::Print(Option_t* /* option*/) const 
+AliFMDDigit::Print(Option_t* option) const 
 {
   // Print digit to standard out 
   AliFMDBaseDigit::Print();
-  cout << "\t" << fEdep << " -> "
-       << fCount1 << " (+ " << fCount2 << " + " << fCount2 << ") = " 
-       << Counts() << endl;
+  std::cout << "\t" 
+           << std::setw(4) << fCount1 << " (" 
+           << std::setw(4) << fCount2 << "," 
+           << std::setw(4) << fCount3 << "," 
+           << std::setw(4) << fCount4 << ") = " 
+           << std::setw(4) << Counts() << std::flush;
+  TString opt(option);
+  if (opt.Contains("l", TString::kIgnoreCase)) {
+    std::cout << " ";
+    for (Int_t i = 0; i < 3; i++) 
+      std::cout << (i == 0 ? "" : ",") << std::setw(5) << fTracks[i];
+  }
+  std::cout << std::endl;
 }
 
 //____________________________________________________________________