X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TOF%2FAliTOFReconstructor.cxx;h=32c27c745e90f5ac1820b404aa95d7018617bc50;hb=d6d4cfcee5f957750475adc502b7aed757c24b98;hp=6ff0e34a49549a1ccd9051a4dff9b77118dd4606;hpb=121a60bdc4a48622b049b36c1fd6bbaea265c3e5;p=u%2Fmrichter%2FAliRoot.git diff --git a/TOF/AliTOFReconstructor.cxx b/TOF/AliTOFReconstructor.cxx index 6ff0e34a495..32c27c745e9 100644 --- a/TOF/AliTOFReconstructor.cxx +++ b/TOF/AliTOFReconstructor.cxx @@ -21,62 +21,265 @@ // // /////////////////////////////////////////////////////////////////////////////// +#include +#include "TObjArray.h" +#include "TString.h" -#include "AliTOFReconstructor.h" -#include "AliRunLoader.h" -#include "AliRun.h" -#include "AliTOF.h" +#include "AliLog.h" +#include "AliESDEvent.h" +#include "AliESDpid.h" +#include "AliRawReader.h" +#include "AliTOFHeader.h" + +#include "AliTOFClusterFinder.h" +#include "AliTOFClusterFinderV1.h" +#include "AliTOFcalib.h" +#include "AliTOFtrackerMI.h" #include "AliTOFtracker.h" +#include "AliTOFtrackerV1.h" +#include "AliTOFT0maker.h" +#include "AliTOFReconstructor.h" +class TTree; ClassImp(AliTOFReconstructor) + //____________________________________________________________________ +AliTOFReconstructor::AliTOFReconstructor() + : AliReconstructor(), + fTOFcalib(0)/*, + fTOFT0maker(0)*/ +{ +// +// ctor +// + + //Retrieving the TOF calibration info + fTOFcalib = new AliTOFcalib(); + fTOFcalib->Init(); + +#if 0 + fTOFcalib->CreateCalObjects(); + + if(!fTOFcalib->ReadParOnlineDelayFromCDB("TOF/Calib",-1)) {AliFatal("Exiting, no CDB object found!!!");exit(0);} + if(!fTOFcalib->ReadParOnlineStatusFromCDB("TOF/Calib",-1)) {AliFatal("Exiting, no CDB object found!!!");exit(0);} + + if(!fTOFcalib->ReadParOfflineFromCDB("TOF/Calib",-1)) {AliFatal("Exiting, no CDB object found!!!");exit(0);} + + + if(!fTOFcalib->ReadDeltaBCOffsetFromCDB("TOF/Calib",-1)) {AliFatal("Exiting, no CDB object found!!!");exit(0);} + if(!fTOFcalib->ReadCTPLatencyFromCDB("TOF/Calib",-1)) {AliFatal("Exiting, no CDB object found!!!");exit(0);} + if(!fTOFcalib->ReadT0FillFromCDB("TOF/Calib",-1)) {AliFatal("Exiting, no CDB object found!!!");exit(0);} + if(!fTOFcalib->ReadRunParamsFromCDB("TOF/Calib",-1)) {AliFatal("Exiting, no CDB object found!!!");exit(0);} +#endif + +} //_____________________________________________________________________________ -void AliTOFReconstructor::Reconstruct(AliRunLoader* /*runLoader*/) const +AliTOFReconstructor::~AliTOFReconstructor() { -// nothing to be done +// +// dtor +// + + delete fTOFcalib; + + //delete fTOFT0maker; } //_____________________________________________________________________________ -AliTracker* AliTOFReconstructor::CreateTracker(AliRunLoader* runLoader) const +void AliTOFReconstructor::Reconstruct(AliRawReader *rawReader, + TTree *clustersTree) const { -// create a TOF tracker + // + // reconstruct clusters from Raw Data + // + + TString optionString = GetOption(); + + // use V1 cluster finder if selected + if (optionString.Contains("ClusterizerV1")) { + static AliTOFClusterFinderV1 tofClus(fTOFcalib); + + // decoder version option + if (optionString.Contains("DecoderV0")) { + tofClus.SetDecoderVersion(0); + } + else if (optionString.Contains("DecoderV1")) { + tofClus.SetDecoderVersion(1); + } + else { + tofClus.SetDecoderVersion(2); + } + + tofClus.Digits2RecPoints(rawReader, clustersTree); + } + else { + static AliTOFClusterFinder tofClus(fTOFcalib); + + // decoder version option + if (optionString.Contains("DecoderV0")) { + tofClus.SetDecoderVersion(0); + } + else if (optionString.Contains("DecoderV1")) { + tofClus.SetDecoderVersion(1); + } + else { + tofClus.SetDecoderVersion(2); + } + + tofClus.Digits2RecPoints(rawReader, clustersTree); + } - AliTOFGeometry* geom = GetTOFGeometry(runLoader); - if (!geom) return NULL; - Double_t parPID[] = {130., 5.}; - return new AliTOFtracker(geom, parPID); } //_____________________________________________________________________________ -void AliTOFReconstructor::FillESD(AliRunLoader* /*runLoader*/, - AliESD* /*esd*/) const +void AliTOFReconstructor::Reconstruct(TTree *digitsTree, + TTree *clustersTree) const { -// nothing to be done + // + // reconstruct clusters from digits + // + + AliDebug(2,Form("Global Event loop mode: Creating Recpoints from Digits Tree")); + + TString optionString = GetOption(); + // use V1 cluster finder if selected + if (optionString.Contains("ClusterizerV1")) { + static AliTOFClusterFinderV1 tofClus(fTOFcalib); + + // decoder version option + if (optionString.Contains("DecoderV0")) { + tofClus.SetDecoderVersion(0); + } + else if (optionString.Contains("DecoderV1")) { + tofClus.SetDecoderVersion(1); + } + else { + tofClus.SetDecoderVersion(2); + } + + tofClus.Digits2RecPoints(digitsTree, clustersTree); + } + else { + static AliTOFClusterFinder tofClus(fTOFcalib); + + // decoder version option + if (optionString.Contains("DecoderV0")) { + tofClus.SetDecoderVersion(0); + } + else if (optionString.Contains("DecoderV1")) { + tofClus.SetDecoderVersion(1); + } + else { + tofClus.SetDecoderVersion(2); + } + + tofClus.Digits2RecPoints(digitsTree, clustersTree); + } } +//_____________________________________________________________________________ + void AliTOFReconstructor::ConvertDigits(AliRawReader* reader, TTree* digitsTree) const +{ +// reconstruct clusters from digits + + AliDebug(2,Form("Global Event loop mode: Converting Raw Data to a Digits Tree")); + + TString optionString = GetOption(); + // use V1 cluster finder if selected + if (optionString.Contains("ClusterizerV1")) { + static AliTOFClusterFinderV1 tofClus(fTOFcalib); + + // decoder version option + if (optionString.Contains("DecoderV0")) { + tofClus.SetDecoderVersion(0); + } + else if (optionString.Contains("DecoderV1")) { + tofClus.SetDecoderVersion(1); + } + else { + tofClus.SetDecoderVersion(2); + } + + tofClus.Raw2Digits(reader, digitsTree); + } + else { + static AliTOFClusterFinder tofClus(fTOFcalib); + + // decoder version option + if (optionString.Contains("DecoderV0")) { + tofClus.SetDecoderVersion(0); + } + else if (optionString.Contains("DecoderV1")) { + tofClus.SetDecoderVersion(1); + } + else { + tofClus.SetDecoderVersion(2); + } + + tofClus.Raw2Digits(reader, digitsTree); + } +} //_____________________________________________________________________________ -AliTOFGeometry* AliTOFReconstructor::GetTOFGeometry(AliRunLoader* runLoader) const +AliTracker* AliTOFReconstructor::CreateTracker() const { -// get the TOF parameters - if (!runLoader->GetAliRun()) runLoader->LoadgAlice(); - if (!runLoader->GetAliRun()) { - Error("GetTOFGeometry", "couldn't get AliRun object"); - return NULL; + // + // create a TOF tracker using + // TOF Reco Param collected by STEER + // + + TString selectedTracker = GetOption(); + + AliTracker *tracker; + // use MI tracker if selected + if (selectedTracker.Contains("TrackerMI")) { + tracker = new AliTOFtrackerMI(); } - AliTOF* tof = (AliTOF*) runLoader->GetAliRun()->GetDetector("TOF"); - if (!tof) { - Error("GetTOFGeometry", "couldn't get TOF detector"); - return NULL; + // use V1 tracker if selected + else if (selectedTracker.Contains("TrackerV1")) { + tracker = new AliTOFtrackerV1(); } - if (!tof->GetGeometry()) { - Error("GetTOFGeometry", "no TOF geometry available"); - return NULL; + else { + tracker = new AliTOFtracker(); } - return tof->GetGeometry(); + return tracker; + +} + +//_____________________________________________________________________________ +void AliTOFReconstructor::FillEventTimeWithTOF(AliESDEvent *event, AliESDpid *esdPID) +{ + // + // Fill AliESDEvent::fTOFHeader variable + // It contains the event_time estiamted by the TOF combinatorial algorithm + // + + if (!GetRecoParam()) AliFatal("cannot get TOF RECO params"); + + Float_t tofResolution = GetRecoParam()->GetTimeResolution();// TOF time resolution in ps + AliTOFT0maker *tofT0maker = new AliTOFT0maker(esdPID,fTOFcalib); + //AliTOFT0maker tofT0maker = AliTOFT0maker(esdPID,fTOFcalib); + tofT0maker->SetTimeResolution(tofResolution); + tofT0maker->ComputeT0TOF(event); + tofT0maker->WriteInESD(event); + tofT0maker->~AliTOFT0maker(); + delete tofT0maker; + +} + +//_____________________________________________________________________________ +void +AliTOFReconstructor::FillESD(TTree *, TTree *, AliESDEvent * /*esdEvent*/) const +{ + // + // correct Texp + // + // + + // fTOFcalib->CalibrateTExp(esdEvent); }