]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - FMD/AliFMDHitDigitizer.cxx
Connection to tree in Notify() seems to be safer.
[u/mrichter/AliRoot.git] / FMD / AliFMDHitDigitizer.cxx
index 4087677ec19fcc2b703d0cf6fe73104f298bbc2a..ad389f0d8793b008845fa6947dc9aa421666930d 100644 (file)
@@ -215,6 +215,7 @@ AliFMDHitDigitizer::AliFMDHitDigitizer(AliFMD* fmd, Output_t  output)
                                "FMD Hit->Digit digitizer" :
                                "FMD Hit->SDigit digitizer")),
     fOutput(output), 
+    fHoldTime(2e-6),
     fStack(0)
 {
   fFMD = fmd;
@@ -265,7 +266,7 @@ AliFMDHitDigitizer::Exec(Option_t* /*option*/)
     }
     
     // Read in the event
-    AliFMDDebug(5, ("Now digitizing (Hits->%s) event # %d", 
+    AliFMDDebug(1, ("Now digitizing (Hits->%s) event # %d", 
                    (fOutput == kDigits ? "digits" : "sdigits"), event));
     thisLoader->GetEvent(event);
     
@@ -384,11 +385,16 @@ AliFMDHitDigitizer::SumContributions(TBranch* hitsBranch)
       // Get the hit number `hit'
       AliFMDHit* fmdHit = 
        static_cast<AliFMDHit*>(fmdHits->UncheckedAt(hit));
+
+      // Ignore hits that arrive too late
+      if (fmdHit->Time() > fHoldTime) continue;
       
+
       // Check if this is a primary particle
       Bool_t isPrimary = kTRUE;
+      Int_t  trackno   = -1;
       if (fStack) {
-       Int_t      trackno = fmdHit->Track();
+       trackno = fmdHit->Track();
        AliFMDDebug(10, ("Will get track # %d/%d from entry # %d", 
                        trackno, fStack->GetNtrack(), track));
        if (fStack->GetNtrack() < trackno) {
@@ -396,7 +402,9 @@ AliFMDHitDigitizer::SumContributions(TBranch* hitsBranch)
                        trackno, fStack->GetNtrack()));
          continue;
        }
-       
+#if 1
+       isPrimary = fStack->IsPhysicalPrimary(trackno);
+#else // This is our hand-crafted code.  We use the ALICE definition
        TParticle* part    = fStack->Particle(trackno);
        isPrimary          = part->IsPrimary();
        if (!isPrimary) { 
@@ -412,15 +420,27 @@ AliFMDHitDigitizer::SumContributions(TBranch* hitsBranch)
                       (mother ? mother->GetStatusCode() : -1),
                       (isPrimary ? "primary" : "secondary")));
        }
+#endif
       }
     
       // Extract parameters 
+      AliFMDDebug(15,("Adding contribution %7.5f for FMD%d%c[%2d,%3d] "
+                     " for trackno %6d (%s)", 
+                     fmdHit->Edep(),
+                     fmdHit->Detector(), 
+                     fmdHit->Ring(),
+                     fmdHit->Sector(), 
+                     fmdHit->Strip(), 
+                     trackno, 
+                     (isPrimary ? "primary" : "secondary")));
       AddContribution(fmdHit->Detector(),
                      fmdHit->Ring(),
                      fmdHit->Sector(),
                      fmdHit->Strip(),
                      fmdHit->Edep(), 
-                     isPrimary);
+                     isPrimary, 
+                     1, 
+                     &trackno);
     }  // hit loop
   } // track loop
   AliFMDDebug(5, ("Size of cache: %d bytes, read %d bytes", 
@@ -444,22 +464,27 @@ AliFMDHitDigitizer::MakePedestal(UShort_t  detector,
 
 //____________________________________________________________________
 void
-AliFMDHitDigitizer::AddDigit(UShort_t  detector, 
-                            Char_t    ring,
-                            UShort_t  sector, 
-                            UShort_t  strip, 
-                            Float_t   edep, 
-                            UShort_t  count1, 
-                            Short_t   count2, 
-                            Short_t   count3,
-                            Short_t   count4, 
-                            UShort_t  ntotal,
-                            UShort_t  nprim) const
+AliFMDHitDigitizer::AddDigit(UShort_t        detector, 
+                            Char_t          ring,
+                            UShort_t        sector, 
+                            UShort_t        strip, 
+                            Float_t         edep, 
+                            UShort_t        count1, 
+                            Short_t         count2, 
+                            Short_t         count3,
+                            Short_t         count4, 
+                            UShort_t        ntotal,
+                            UShort_t        nprim, 
+                            const TArrayI&  refs) const
 {
   // Add a digit or summable digit
   if (fOutput == kDigits) { 
+    AliFMDDebug(15,("Adding digit for FMD%d%c[%2d,%3d] = (%x,%x,%x,%x)",
+                   detector, ring, sector, strip, 
+                   count1, count2, count3, count4));
     AliFMDBaseDigitizer::AddDigit(detector, ring, sector, strip, 0,
-                                 count1, count2, count3, count4, 0, 0);
+                                 count1, count2, count3, count4, 
+                                 ntotal, nprim, refs);
     return;
   }
   if (edep <= 0) { 
@@ -473,12 +498,13 @@ AliFMDHitDigitizer::AddDigit(UShort_t  detector,
                    detector, ring, sector, strip));
     return;
   }
-  AliFMDDebug(15, ("Adding digit for FMD%d%c[%2d,%3d] = (%x,%x,%x,%x) [%d/%d]",
+  AliFMDDebug(15, ("Adding sdigit for FMD%d%c[%2d,%3d] = "
+                  "(%x,%x,%x,%x) [%d/%d] %d",
                   detector, ring, sector, strip, 
-                  count1, count2, count3, count4, nprim, ntotal));
+                  count1, count2, count3, count4, nprim, ntotal, refs.fN));
   fFMD->AddSDigitByFields(detector, ring, sector, strip, edep,
                          count1, count2, count3, count4, 
-                         ntotal, nprim);
+                         ntotal, nprim, fStoreTrackRefs ? refs.fArray : 0);
 }
 
 //____________________________________________________________________