X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TRD%2FAliTRDReconstructor.cxx;h=738916c52cdf5ef967b791c7fc254092b93c130e;hb=d643e2629193af8e0b2cd155063d5be731f642d4;hp=a17fb688c685e30114ed4a27f78e1e0a384e760f;hpb=c2cd1e8f3cbe147eabb425d7f75be04145645d9a;p=u%2Fmrichter%2FAliRoot.git diff --git a/TRD/AliTRDReconstructor.cxx b/TRD/AliTRDReconstructor.cxx index a17fb688c68..738916c52cd 100644 --- a/TRD/AliTRDReconstructor.cxx +++ b/TRD/AliTRDReconstructor.cxx @@ -42,6 +42,8 @@ #include "AliTRDtrackerV1.h" #include "AliTRDrecoParam.h" +#include "TTreeStream.h" + #define SETFLG(n,f) ((n) |= f) #define CLRFLG(n,f) ((n) &= ~f) @@ -54,14 +56,19 @@ AliTRDReconstructor::AliTRDReconstructor() ,fSteerParam(0) { // setting default "ON" steering parameters + // owner of debug streamers + SETFLG(fSteerParam, kOwner); // write clusters [cw] SETFLG(fSteerParam, kWriteClusters); // track seeding (stand alone tracking) [sa] SETFLG(fSteerParam, kSeeding); // PID method in reconstruction (NN) [nn] SETFLG(fSteerParam, kSteerPID); + // number of dEdx slices in the ESD track [8s] + //SETFLG(fSteerParam, kEightSlices); - memset(fStreamLevel, 0, 5*sizeof(UChar_t)); + memset(fStreamLevel, 0, kNtasks*sizeof(UChar_t)); + memset(fDebugStream, 0, sizeof(TTreeSRedirector *) * kNtasks); // Xe tail cancellation parameters fTCParams[0] = 1.156; // r1 fTCParams[1] = 0.130; // r2 @@ -79,8 +86,11 @@ AliTRDReconstructor::AliTRDReconstructor(const AliTRDReconstructor &r) :AliReconstructor(r) ,fSteerParam(r.fSteerParam) { - memcpy(fStreamLevel, r.fStreamLevel, 5*sizeof(UChar_t)); + memcpy(fStreamLevel, r.fStreamLevel, kNtasks*sizeof(UChar_t)); memcpy(fTCParams, r.fTCParams, 8*sizeof(Double_t)); + memcpy(fDebugStream, r.fDebugStream, sizeof(TTreeSRedirector *) *kNtasks); + // ownership of debug streamers is not taken + CLRFLG(fSteerParam, kOwner); } //_____________________________________________________________________________ @@ -89,6 +99,10 @@ AliTRDReconstructor::~AliTRDReconstructor() if(fgClusters) { fgClusters->Delete(); delete fgClusters; } + if(fSteerParam&kOwner){ + for(Int_t itask = 0; itask < kNtasks; itask++) + if(fDebugStream[itask]) delete fDebugStream[itask]; + } } @@ -118,6 +132,7 @@ void AliTRDReconstructor::ConvertDigits(AliRawReader *rawReader // // Convert raw data digits into digit objects in a root tree // + AliInfo("Feature not available for the moment."); return; AliInfo("Convert raw data digits into digit objects [RawReader -> Digit TTree]"); @@ -274,8 +289,9 @@ void AliTRDReconstructor::SetOption(Option_t *opt) TString levelstring(((TObjString*)(*stl)[2])->String()); // Set the stream Level Int_t level = levelstring.Atoi(); - AliTRDReconstructorTask task = kTracker; - if(taskstr.CompareTo("cl") == 0) task = kClusterizer; + ETRDReconstructorTask task = kTracker; + if(taskstr.CompareTo("raw") == 0) task = kRawReader; + else if(taskstr.CompareTo("cl") == 0) task = kClusterizer; else if(taskstr.CompareTo("tr") == 0) task = kTracker; else if(taskstr.CompareTo("pi") == 0) task = kPID; SetStreamLevel(level, task); @@ -285,22 +301,19 @@ void AliTRDReconstructor::SetOption(Option_t *opt) } //_____________________________________________________________________________ -void AliTRDReconstructor::SetStreamLevel(Int_t level, AliTRDReconstructorTask task){ +void AliTRDReconstructor::SetStreamLevel(Int_t level, ETRDReconstructorTask task){ // // Set the Stream Level for one of the tasks Clusterizer, Tracker or PID // - TString taskname; - switch(task){ - case kClusterizer: - taskname = "Clusterizer"; - break; - case kTracker: - taskname = "Tracker"; - break; - case kPID: - taskname = "PID"; - break; - } + TString taskname[4] = {"RawReader", "Clusterizer", "Tracker", "PID"}; + const Int_t minLevel[4] = {1, 1, 2, 1}; // the minimum debug level upon which a debug stream is created for different tasks //AliInfo(Form("Setting Stream Level for Task %s to %d", taskname.Data(),level)); fStreamLevel[(Int_t)task] = level; + // Initialize DebugStreamer if not yet done + if(level >= minLevel[task] && !fDebugStream[task]){ + TDirectory *savedir = gDirectory; + fDebugStream[task] = new TTreeSRedirector(Form("TRD.%sDebug.root", taskname[task].Data())); + savedir->cd(); + SETFLG(fSteerParam, kOwner); + } }