fTRDTracker(NULL),
fTOFLoader(NULL),
fTOFTracker(NULL),
+ fRICHLoader(NULL),
+ fRICHTracker(NULL),
fReconstructors(),
fOptions()
fTRDTracker(NULL),
fTOFLoader(NULL),
fTOFTracker(NULL),
+ fRICHLoader(NULL),
+ fRICHTracker(NULL),
fReconstructors(),
fOptions()
if (fCheckPointLevel > 1) WriteESD(esd, "TOF.back");
fTOFTracker->UnloadClusters();
fTOFLoader->UnloadDigits();
+
+ if (!fRICHTracker) {
+ AliWarning("no RICH tracker");
+ } else {
+ // RICH back propagation
+ AliDebug(1, "RICH back propagation");
+ fRICHLoader->LoadRecPoints("read");
+ TTree* richTree = fRICHLoader->TreeR();
+ if (!richTree) {
+ AliError("Can't get the RICH cluster tree");
+ return kFALSE;
+ }
+ fRICHTracker->LoadClusters(richTree);
+ if (fRICHTracker->PropagateBack(esd) != 0) {
+ AliError("RICH backward propagation failed");
+ return kFALSE;
+ }
+ if (fCheckPointLevel > 1) WriteESD(esd, "RICH.back");
+ fRICHTracker->UnloadClusters();
+ fRICHLoader->UnloadRecPoints();
+ }
}
// TRD inward refit
}
}
+ fRICHTracker = NULL;
+ fRICHLoader = fRunLoader->GetLoader("RICHLoader");
+ if (!fRICHLoader) {
+ AliWarning("no RICH loader found");
+ if (fStopOnError) return kFALSE;
+ } else {
+ AliReconstructor* tofReconstructor = GetReconstructor("RICH");
+ if (tofReconstructor) {
+ fRICHTracker = tofReconstructor->CreateTracker(fRunLoader);
+ }
+ if (!fRICHTracker) {
+ AliWarning("couldn't create a tracker for RICH");
+ if (fStopOnError) return kFALSE;
+ }
+ }
+
return kTRUE;
}
fTRDTracker = NULL;
delete fTOFTracker;
fTOFTracker = NULL;
+ delete fRICHTracker;
+ fRICHTracker = NULL;
delete fRunLoader;
fRunLoader = NULL;
AliTracker* fTRDTracker; //! tracker for TRD
AliLoader* fTOFLoader; //! loader for TOF
AliTracker* fTOFTracker; //! tracker for TOF
+ AliLoader* fRICHLoader; //! loader for RICH
+ AliTracker* fRICHTracker; //! tracker for RICH
static const Int_t fgkNDetectors = 15; //! number of detectors
static const char* fgkDetectorName[fgkNDetectors]; //! names of detectors