}
+#if 0
+//____________________________________________________________________
+void
+AliFMD::SetTrackingParameters(Int_t imed,
+ Float_t gamma,
+ Float_t electron,
+ Float_t neutral_hadron,
+ Float_t charged_hadron,
+ Float_t muon,
+ Float_t electron_bremstrahlung,
+ Float_t muon__bremstrahlung,
+ Float_t electron_delta,
+ Float_t muon_delta,
+ Float_t muon_pair,
+ Int_t annihilation,
+ Int_t bremstrahlung,
+ Int_t compton_scattering,
+ Int_t decay,
+ Int_t delta_ray,
+ Int_t hadronic,
+ Int_t energy_loss,
+ Int_t multiple_scattering,
+ Int_t pair_production,
+ Int_t photon_production,
+ Int_t rayleigh_scattering)
+{
+ // Disabled by request of FCA, kept for reference only
+ if (!gMC) return;
+ TArrayI& idtmed = *(GetIdtmed());
+ Int_t iimed = idtmed[imed];
+ // gMC->Gstpar(iimed, "CUTGAM", gamma);
+ // gMC->Gstpar(iimed, "CUTELE", electron);
+ // gMC->Gstpar(iimed, "CUTNEU", neutral_hadron);
+ // gMC->Gstpar(iimed, "CUTHAD", charged_hadron);
+ // gMC->Gstpar(iimed, "CUTMUO", muon);
+ // gMC->Gstpar(iimed, "BCUTE", electron_bremstrahlung);
+ // gMC->Gstpar(iimed, "BCUTM", muon__bremstrahlung);
+ // gMC->Gstpar(iimed, "DCUTE", electron_delta);
+ // gMC->Gstpar(iimed, "DCUTM", muon_delta);
+ // gMC->Gstpar(iimed, "PPCUTM", muon_pair);
+ // gMC->Gstpar(iimed, "ANNI", Float_t(annihilation));
+ // gMC->Gstpar(iimed, "BREM", Float_t(bremstrahlung));
+ // gMC->Gstpar(iimed, "COMP", Float_t(compton_scattering));
+ // gMC->Gstpar(iimed, "DCAY", Float_t(decay));
+ // gMC->Gstpar(iimed, "DRAY", Float_t(delta_ray));
+ // gMC->Gstpar(iimed, "HADR", Float_t(hadronic));
+ // gMC->Gstpar(iimed, "LOSS", Float_t(energy_loss));
+ // gMC->Gstpar(iimed, "MULS", Float_t(multiple_scattering));
+ // gMC->Gstpar(iimed, "PAIR", Float_t(pair_production));
+ // gMC->Gstpar(iimed, "PHOT", Float_t(photon_production));
+ // gMC->Gstpar(iimed, "RAYL", Float_t(rayleigh_scattering));
+}
+#endif
+
//____________________________________________________________________
void
AliFMD::Init()
AliFMDDebug(1, ("Initialising FMD detector object"));
TVirtualMC* mc = TVirtualMC::GetMC();
AliFMDGeometry* fmd = AliFMDGeometry::Instance();
- const TArrayI& actGeo = fmd->ActiveIds();
+ TArrayI actGeo = fmd->ActiveIds();
+ bool valid = true;
+ if (actGeo.fN <= 0) valid = false;
+ else {
+ for (int i = 0; i < actGeo.fN; i++) {
+ if (actGeo[i] < 0) {
+ valid = false;
+ break;
+ }
+ }
+ }
+ if (!valid) {
+ AliFMDDebug(1, ("Extracting geometry info from loaded geometry"));
+ fmd->ExtractGeomInfo();
+ actGeo = fmd->ActiveIds();
+ }
TArrayI actVmc(actGeo.fN);
for (Int_t i = 0; i < actGeo.fN; i++) {
+ if (actGeo[i] < 0) {
+ AliError(Form("Invalid id: %d", actGeo[i]));
+ continue;
+ }
TGeoVolume *sens = gGeoManager->GetVolume(actGeo[i]);
if (!sens) {
AliError(Form("No TGeo volume for sensitive volume ID=%d",actGeo[i]));
//
if (AliLog::GetDebugLevel("FMD", "AliFMD") < 10) return;
if (fBad && fBad->GetEntries() > 0) {
- AliWarning((Form("EndEvent", "got %d 'bad' hits", fBad->GetEntries())));
+ AliWarning(Form("got %d 'bad' hits", fBad->GetEntries()));
TIter next(fBad);
AliFMDHit* hit;
while ((hit = static_cast<AliFMDHit*>(next()))) hit->Print("D");
Short_t count2,
Short_t count3,
Short_t count4,
- const TArrayI& refs)
+ UShort_t nrefs,
+ Int_t* refs)
{
// add a real digit - as coming from data
//
// count3 ADC count (a 10-bit word), or -1 if not used
TClonesArray& a = *(DigitsArray());
- new (a[fNdigits++])
- AliFMDDigit(detector, ring, sector, strip,
- count1, count2, count3, count4, refs);
AliFMDDebug(15, ("Adding digit # %5d/%5d for FMD%d%c[%2d,%3d]"
"=(%d,%d,%d,%d) with %d tracks",
fNdigits-1, a.GetEntriesFast(),
detector, ring, sector, strip,
- count1, count2, count3, count4, refs.fN));
+ count1, count2, count3, count4, nrefs));
+ new (a[fNdigits++])
+ AliFMDDigit(detector, ring, sector, strip,
+ count1, count2, count3, count4, nrefs, refs);
}
Short_t count4,
UShort_t ntot,
UShort_t nprim,
- const TArrayI& refs)
+ Int_t* refs)
{
// add a summable digit
//
TClonesArray& a = *(SDigitsArray());
// AliFMDDebug(0, ("Adding sdigit # %d", fNsdigits));
+ AliFMDDebug(15, ("Adding sdigit # %5d/%5d for FMD%d%c[%2d,%3d]"
+ "=(%d,%d,%d,%d) with %d tracks %d primaries (%p)",
+ fNsdigits-1, a.GetEntriesFast(),
+ detector, ring, sector, strip,
+ count1, count2, count3, count4, ntot, nprim, refs));
new (a[fNsdigits++])
AliFMDSDigit(detector, ring, sector, strip, edep,
count1, count2, count3, count4, ntot, nprim, refs);