"FMD Hit->Digit digitizer" :
"FMD Hit->SDigit digitizer")),
fOutput(output),
+ fHoldTime(2e-6),
fStack(0)
{
fFMD = fmd;
}
// 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);
// 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) {
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) {
(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",
//____________________________________________________________________
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) {
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);
}
//____________________________________________________________________