]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG2/SPECTRA/AliAnalysisCentralCutESD.cxx
New base class for multiplicity tasks
[u/mrichter/AliRoot.git] / PWG2 / SPECTRA / AliAnalysisCentralCutESD.cxx
index 5c378ffd020bdde90d894b73cd5fae1e1c2d3cba..fc212ad4e865644b32f6e8a2855a2ff8771ce088 100644 (file)
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/
 
-//  *******************************************
-//  * particle level cuts for azimuthal isotropic      *
-//  * expansion in highly central collisions analysis *
-//  * author: Cristian Andrei                                    *
-//  *         acristian@niham.nipne.ro                        *
-//  * *****************************************
+// -----------------------------------------------
+// particle level cuts for azimuthal isotropic
+// expansion in highly central collisions analysis
+// author: Cristian Andrei
+//         acristian@niham.nipne.ro
+// ------------------------------------------------
 
 #include <TF1.h>
 #include <TFile.h>
@@ -61,7 +61,7 @@ AliAnalysisCentralCutESD::AliAnalysisCentralCutESD(const Char_t* name, const Cha
        TFile *f = TFile::Open("$ALICE_ROOT/PWG2/data/PriorProbabilities.root ");
        if(!f){
            printf("Can't open PWG2 prior probabilities file!\n Exiting ...\n");
-           exit(1);
+           return;
        }
        fElectronFunction = (TF1 *)f->Get("fitElectrons");
        fMuonFunction = (TF1 *)f->Get("fitMuons");
@@ -83,6 +83,7 @@ AliAnalysisCentralCutESD::~AliAnalysisCentralCutESD() {
        if(fPionFunction) delete fPionFunction;
        if(fKaonFunction) delete fKaonFunction;
        if(fProtonFunction) delete fProtonFunction;
+
 }
 
 
@@ -93,7 +94,7 @@ Bool_t AliAnalysisCentralCutESD::IsSelected(TObject *obj){
 
     if(!track){
                printf("AliAnalysisCentralCutESD:IsSelected ->Can't get track!\n");
-               exit(1);
+               return kFALSE;
     }
 
     if(fReqCharge){
@@ -101,7 +102,7 @@ Bool_t AliAnalysisCentralCutESD::IsSelected(TObject *obj){
     } 
 
     if(fReqPID){
-               if(!IsA(track, fPartType)) return kFALSE;    
+               if(!IsA(track, fPartType)) return kFALSE;
     }
 
     return kTRUE;
@@ -128,11 +129,19 @@ Double_t priors=0;
 
 
 
-Bool_t AliAnalysisCentralCutESD::IsA(AliESDtrack *track, PDG_t fPartType){
+Bool_t AliAnalysisCentralCutESD::IsA(AliESDtrack *track, PDG_t reqPartType){
 // Determines the type of the particle
+    Int_t charge;
+
+    if(reqPartType < 0){
+      charge = -1;
+    }
+    else{
+      charge = 1;
+    }
 
-    Double_t probability[5];
-    Double_t w[5];
+    Double_t probability[5] = {0.0,0.0,0.0,0.0,0.0};
+    Double_t w[5] = {0.0,0.0,0.0,0.0,0.0};
 
     Long64_t partType = 0;
 
@@ -156,6 +165,7 @@ Bool_t AliAnalysisCentralCutESD::IsA(AliESDtrack *track, PDG_t fPartType){
 
     if(fPIDtype.Contains("Bayesian")) {
                partType = TMath::LocMax(AliPID::kSPECIES,w);
+               if(partType<0.) return kFALSE;
     }
 
     else if(fPIDtype.Contains("Custom")){
@@ -168,22 +178,23 @@ Bool_t AliAnalysisCentralCutESD::IsA(AliESDtrack *track, PDG_t fPartType){
 
     else{
                printf("Unknown PID method!\n");
-               exit(1);
+               return kFALSE;
     }
 
-    if((AliPID::ParticleCode(partType)) != fPartType){
+    if((AliPID::ParticleCode(partType)) != reqPartType){
                return kFALSE;
     }
 
+       if(track->Charge() != charge) return kFALSE;
 
     return kTRUE;
 
 }
 
 Bool_t AliAnalysisCentralCutESD::IsCharged(AliESDtrack* const track) const{
-    
+
     if(track->Charge() == 0) return kFALSE;
-    
+
     return kTRUE;
 
 }