]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/AliESDv0KineCuts.cxx
Updates
[u/mrichter/AliRoot.git] / ANALYSIS / AliESDv0KineCuts.cxx
index 9eb925540bd5d5aac26e56f76ba9ec1b1f8d1fdc..a59e640ed4160eb73f586c40112abfa37b8a7c64 100644 (file)
@@ -54,6 +54,8 @@ AliESDv0KineCuts::AliESDv0KineCuts() :
   , fGcutInvMass(0.05)\r
   , fK0cutChi2NDF(10)\r
   , fLcutChi2NDF(10)\r
+  , fUseExternalVertex(kFALSE)\r
+  , fDeleteVertex(kFALSE)\r
 {\r
   //\r
   // Default constructor\r
@@ -124,6 +126,8 @@ AliESDv0KineCuts::AliESDv0KineCuts(const AliESDv0KineCuts &ref):
   , fGcutInvMass(0.05)\r
   , fK0cutChi2NDF(10)\r
   , fLcutChi2NDF(10)\r
+  , fUseExternalVertex(kFALSE)\r
+  , fDeleteVertex(kFALSE)\r
 {\r
   //\r
   // Copy operator\r
@@ -156,7 +160,8 @@ void AliESDv0KineCuts::Copy(TObject &ref) const {
   target.fTPCchi2perCls = fTPCchi2perCls;\r
   target.fTPCclsRatio = fTPCclsRatio;\r
   target.fNoKinks = fNoKinks;\r
-\r
+  target.fUseExternalVertex = fUseExternalVertex;  //added december 2nd 2011\r
+  target.fDeleteVertex = fDeleteVertex;  //added december 2nd 2011\r
 \r
   // default gamma cuts values\r
   target.fGcutChi2NDF = fGcutChi2NDF;\r
@@ -658,7 +663,7 @@ Bool_t  AliESDv0KineCuts::CaseLambda(AliESDv0* const v0, Int_t &pdgV0, Int_t &pd
   return kTRUE;\r
 }\r
 //____________________________________________________________________\r
-Bool_t  AliESDv0KineCuts::V0CutsCommon(AliESDv0 * const v0) const \r
+Bool_t  AliESDv0KineCuts::V0CutsCommon(const AliESDv0 * const v0) const \r
 {\r
   //\r
   // V0 cuts common to all V0s\r
@@ -881,18 +886,20 @@ Bool_t  AliESDv0KineCuts::GetHelixCenter(AliESDtrack * const track, Double_t b,I
       xpoint = - xpoint;\r
       ypoint = - ypoint;\r
     }\r
-\r
+    /* avoid self assignment\r
     if(charge < 0){\r
       xpoint =  xpoint;\r
       ypoint =  ypoint;\r
     }\r
+    */\r
   }\r
   if(b>0){\r
+    /* avoid self assignment\r
     if(charge > 0){\r
       xpoint =  xpoint;\r
       ypoint =  ypoint;\r
     }\r
-\r
+    */\r
     if(charge < 0){\r
       xpoint = - xpoint;\r
       ypoint = - ypoint;\r
@@ -947,6 +954,17 @@ void  AliESDv0KineCuts::SetEvent(AliESDEvent* const event){
     AliErrorClass("Invalid input event pointer");\r
     return;\r
   }\r
+if (fUseExternalVertex) return;\r
+else{\r
+       if(fPrimaryVertex && fDeleteVertex){\r
+               delete  fPrimaryVertex;\r
+               fPrimaryVertex=0x0;\r
+               }\r
+       fPrimaryVertex = new AliKFVertex(*(fEvent->GetPrimaryVertex()));\r
+       fDeleteVertex=kTRUE;\r
+       }\r
+\r
+\r
 \r
 }\r
 //____________________________________________________________________\r
@@ -954,20 +972,49 @@ void  AliESDv0KineCuts::SetEvent(AliVEvent* const event){
   //\r
   // direct setter of ESD event\r
   //\r
-  if(event)\r
-    fEvent = static_cast<AliESDEvent*>(event);\r
+\r
+  fEvent = dynamic_cast<AliESDEvent*>(event);\r
   if(!fEvent){\r
     AliErrorClass("Invalid input event pointer");\r
     return;\r
   }\r
+  \r
+  if (fUseExternalVertex) return;\r
+  else{\r
+    if(fPrimaryVertex && fDeleteVertex){\r
+      delete   fPrimaryVertex;\r
+      fPrimaryVertex=0x0;\r
+      }\r
+    fPrimaryVertex = new AliKFVertex(*(fEvent->GetPrimaryVertex()));\r
+    fDeleteVertex=kTRUE;\r
+  }\r
+}\r
 \r
+\r
+//________________________________________________________________\r
+void    AliESDv0KineCuts::UseExternalVertex(Bool_t use_external){\r
+       //\r
+       // Reenable primary Vertex from ESD event\r
+       //\r
+       if (use_external) fUseExternalVertex =kTRUE;\r
+       else fUseExternalVertex =kFALSE;\r
 }\r
+\r
+\r
+\r
+\r
 //________________________________________________________________\r
 void AliESDv0KineCuts::SetPrimaryVertex(AliKFVertex* const v){\r
   //\r
   // set the primary vertex of the event\r
   //\r
-  fPrimaryVertex = v;\r
+       if(fPrimaryVertex && fDeleteVertex){   \r
+               delete  fPrimaryVertex;\r
+               fPrimaryVertex =0x0;\r
+               fDeleteVertex = kFALSE;\r
+               }  \r
+  fUseExternalVertex=kTRUE; \r
+  fPrimaryVertex = v; // set primary Vertex\r
   if(!fPrimaryVertex){\r
     AliErrorClass("Failed to initialize the primary vertex");\r
     return;\r
@@ -992,8 +1039,10 @@ void AliESDv0KineCuts::SetMode(Int_t mode, Int_t type){
   switch(mode){\r
   case kPurity:\r
     fMode = kPurity;  // used to obtain highest purity possible - the efficiency may be low\r
+    break;\r
   case kEffGamma:\r
     fMode = kEffGamma; // used to obtain highes efficiency possible - the purity may be worse\r
+    break;\r
   default:\r
     AliError("V0 selection mode not recognozed, setting 'kPurity'");\r
     fMode = kPurity;\r
@@ -1002,8 +1051,10 @@ void AliESDv0KineCuts::SetMode(Int_t mode, Int_t type){
   switch(type){\r
   case kPP:\r
     fType = kPP;  // cuts optimized for low multiplicity \r
+    break;\r
   case kPbPb:\r
     fType = kPbPb;  // cuts optimized for high multiplicity\r
+    break;\r
   }\r
   \r
   // setup the cut values for selected mode & type\r