]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/trigger/AliHLTD0Trigger.cxx
code audit: further cleanup and corrections still necessary; fixing memory leak,...
[u/mrichter/AliRoot.git] / HLT / trigger / AliHLTD0Trigger.cxx
index 22a2611364734d05a591ec0c785d97fe33d0bb73..9e8c94f0a15cf2c37c5b99bbf5f9c0ce5cfb67a8 100644 (file)
@@ -88,6 +88,7 @@ const char* AliHLTD0Trigger::fgkOCDBEntry="HLT/ConfigHLT/D0Trigger";
 
 AliHLTD0Trigger::~AliHLTD0Trigger()
 {
+  // TODO: code audit 2010-07-23 delete obsolete code
   //if(fd0calc){delete fd0calc;}  
   //if(fD0mass){delete fD0mass;}
   //if(ftwoTrackArray){delete ftwoTrackArray;}
@@ -128,6 +129,12 @@ int AliHLTD0Trigger::DoTrigger()
     }
   }
 
+  // TODO: code audit 2010-07-23 get rid of fVertex as member variable, the object
+  // is changing every event and already available after the object extraction
+  // change internal functions to pass the vertex as parameter. Setting the variable
+  // to NULL here to be coherent with checks further down.
+  fVertex=NULL;
+
   for ( const TObject *iter = GetFirstInputObject(kAliHLTDataTypeESDObject); iter != NULL; iter = GetNextInputObject() ) {   
     if(fUseV0){
       nD0=RecV0(iter);
@@ -137,16 +144,22 @@ int AliHLTD0Trigger::DoTrigger()
        event->GetStdContent();
        fField = event->GetMagneticField();
        const AliESDVertex* pv = event->GetPrimaryVertexTracks();
-       fVertex =  new AliESDVertex(*pv);
+       // TODO: code audit 2010-07-23 this is a memory leak, fVertex is not deleted
+       //fVertex =  new AliESDVertex(*pv);
+       // use the vertex object from the ESD, right now we need to cast away the
+       // const'ness, think about changing the functions to use const AliESDVertex* objects
+       fVertex =  const_cast<AliESDVertex*>(pv);
        if(fVertex->GetNContributors()<2){
         HLTDebug("Contributors in ESD vertex to low or not been set");
         continue;
        }
        for(Int_t it=0;it<event->GetNumberOfTracks();it++){
+        // TODO: code audit 2010-07-23 pass vertex object as parameter
         SingleTrackSelect(event->GetTrack(it));
        }
     
-       RecD0(nD0,nD0Onetrue,nD0true);       
+       // TODO: code audit 2010-07-23 pass vertex object as parameter
+       if (fVertex) RecD0(nD0,nD0Onetrue,nD0true);       
     }
   }
 
@@ -168,7 +181,8 @@ int AliHLTD0Trigger::DoTrigger()
     for(UInt_t i=0;i<tracksVector.size();i++){
       SingleTrackSelect(&tracksVector[i]);
     }
-    RecD0(nD0,nD0Onetrue,nD0true);
+    // TODO: code audit 2010-07-23 pass vertex object as parameter
+    if (fVertex) RecD0(nD0,nD0Onetrue,nD0true);
   }    
 
   fTotalD0+=nD0;
@@ -246,8 +260,11 @@ int AliHLTD0Trigger::DoInit(int argc, const char** argv)
 int AliHLTD0Trigger::DoDeinit()
 {
   // see header file for class documentation
+
+  // TODO: code audit 2010-07-23 deleted variables to be set to NULL
   if(fd0calc){delete fd0calc;}  
   if(fD0mass){delete fD0mass;}
+  // TODO: code audit 2010-07-23 delete obsolete code
   //if(ftwoTrackArray){delete ftwoTrackArray;}
   //if(fVertex){delete fVertex;}
   return 0;
@@ -341,6 +358,9 @@ int AliHLTD0Trigger::ScanConfigurationArgument(int argc, const char** argv)
 
 void AliHLTD0Trigger::SingleTrackSelect(AliExternalTrackParam* t){
   // Offline har || på disse kuttene på de to henfallsproduktene 
+  // TODO: code audit 2010-07-23 translate all comments
+  if (!fVertex) return;
+
   Double_t pv[3];
   fVertex->GetXYZ(pv);