AliGenInfoTask.h - Forgoten to commit - Debug information
authormarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 17 Mar 2009 13:52:27 +0000 (13:52 +0000)
committermarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 17 Mar 2009 13:52:27 +0000 (13:52 +0000)
AliESDRecInfo.cxx    - Removal of the memory leak

Marian

PWG1/AliESDRecInfo.cxx
PWG1/AliGenInfoTask.h

index 856b022..ddb9abc 100644 (file)
@@ -130,11 +130,13 @@ AliESDRecInfo::~AliESDRecInfo()
   //  destructor
   //
   if (fESDtrack) { delete fESDtrack; fESDtrack=0;}
-  if (fTrackF)   { delete fTrackF;   fTrackF=0;}
+  if (fTrackF)   {   fTrackF=0;}
   if (fTPCtrack) { delete fTPCtrack; fTPCtrack=0;}
   if (fITStrack) { delete fITStrack; fITStrack=0;}
   if (fTRDtrack) { delete fTRDtrack; fTRDtrack=0;}
-  if (fTracks) { delete  fTracks;  fTracks=0;}
+  if (fTracks) { 
+    delete  fTracks;  fTracks=0;
+  }
 }
 
 
@@ -148,7 +150,7 @@ void AliESDRecInfo::Reset()
   fFake     =0;
   fReconstructed=0;
   if (fESDtrack) { delete fESDtrack; fESDtrack=0;}
-  if (fTrackF)   { delete fTrackF;   fTrackF=0;}
+  if (fTrackF)   { fTrackF=0;}
   if (fTPCtrack) { delete fTPCtrack; fTPCtrack=0;}
   if (fITStrack) { delete fITStrack; fITStrack=0;}
   if (fTRDtrack) { delete fTRDtrack; fTRDtrack=0;}
@@ -159,27 +161,30 @@ void AliESDRecInfo::SetESDtrack(const AliESDtrack *track){
   //
   // 
   //
+
   if (fESDtrack) delete fESDtrack;
   fESDtrack = (AliESDtrack*)track->Clone();
+  //AliESDfriendTrack *friendTrack=fESDfriend->GetTrack(fESDtrack->GetID());
+
+
   if (track->GetFriendTrack()){
-    if (fTrackF) delete fTrackF;
-    fTrackF = (AliESDfriendTrack*)track->GetFriendTrack()->Clone();
+    fTrackF = (AliESDfriendTrack*)track->GetFriendTrack();
     Int_t icalib=0;
     TObject *cobject=0;
     //
     while (fTrackF->GetCalibObject(icalib)){
       cobject=fTrackF->GetCalibObject(icalib);
       if (dynamic_cast<AliTPCseed*>(cobject)){
-                               if (fTPCtrack) delete fTPCtrack;
-                               fTPCtrack = (AliTPCseed*)(dynamic_cast<AliTPCseed*>(cobject))->Clone();
+       if (fTPCtrack) delete fTPCtrack;
+       fTPCtrack = (AliTPCseed*)(dynamic_cast<AliTPCseed*>(cobject))->Clone();
       } else if (dynamic_cast<AliTRDtrackV1*>(cobject)){
-                               if (fTRDtrack) delete fTRDtrack;
-                               fTRDtrack = (AliTRDtrackV1*)(dynamic_cast<AliTRDtrackV1*>(cobject))->Clone();
+       if (fTRDtrack) delete fTRDtrack;
+       fTRDtrack = (AliTRDtrackV1*)(dynamic_cast<AliTRDtrackV1*>(cobject))->Clone();
       }
       icalib++;
     }
   }
-  
+  if (!fTPCtrack) fTPCtrack = new AliTPCseed; // add dummy track
 }
 
 
index 8fc97e0..bb90b51 100644 (file)
@@ -20,6 +20,7 @@ class TParticle;
 class AliMCInfo;
 class AliESDRecInfo;
 class AliESDEvent;
+class AliESDfriend;
 class AliMCEvent;
 class AliComparisonObject;
 
@@ -33,6 +34,7 @@ class AliGenInfoTask : public AliAnalysisTask {
   virtual void   CreateOutputObjects();
   virtual void   Exec(Option_t *option);
   virtual void   Terminate(Option_t *);
+  virtual void   FinishTaskOutput();
   //
   //
   void ProcessMCInfo();
@@ -53,11 +55,14 @@ class AliGenInfoTask : public AliAnalysisTask {
   AliMCInfo *GetTrack(Int_t index, Bool_t force=kFALSE);
   AliESDRecInfo *GetRecTrack(Int_t index, Bool_t force=kFALSE);
   Bool_t     AddComparisonObject(AliComparisonObject *pObj);
+  void             RegisterDebugOutput(const char *path);
+  void         SetDebugOuputhPath(const char * name){fDebugOutputPath=name;}
  protected:
   AliGenInfoTask(const AliGenInfoTask& /*info*/);
   AliGenInfoTask& operator=(const AliGenInfoTask& /*info*/) { return *this;}
   AliMCEvent  * fMCinfo;     //! MC event handler
   AliESDEvent * fESD;             //! current esd event
+  AliESDfriend * fESDfriend;             //! current esd event
   //
   TObjArray   *fCompList;        // comparison object list
   //
@@ -71,6 +76,7 @@ class AliGenInfoTask : public AliAnalysisTask {
   TTreeSRedirector *fDebugStreamer;     //! debug streamer
   Int_t  fStreamLevel;                  //  debug stream level 
   Int_t  fDebugLevel;                   //  debug level
+  TString      fDebugOutputPath; // debug output path
   ClassDef(AliGenInfoTask, 1); // Analysis task base class for tracks
 };