Added support for He3 and BA
authoreserradi <eserradi@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 22 Nov 2013 11:32:35 +0000 (11:32 +0000)
committereserradi <eserradi@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 22 Nov 2013 11:32:35 +0000 (11:32 +0000)
13 files changed:
PWGLF/SPECTRA/Nuclei/B2/AliLnBA.cxx [moved from PWGLF/SPECTRA/Nuclei/B2/AliLnB2.cxx with 79% similarity]
PWGLF/SPECTRA/Nuclei/B2/AliLnBA.h [moved from PWGLF/SPECTRA/Nuclei/B2/AliLnB2.h with 77% similarity]
PWGLF/SPECTRA/Nuclei/B2/AliLnDriver.cxx
PWGLF/SPECTRA/Nuclei/B2/AliLnDriver.h
PWGLF/SPECTRA/Nuclei/B2/Config.h
PWGLF/SPECTRA/Nuclei/B2/macros/B2Mult.C
PWGLF/SPECTRA/Nuclei/B2/macros/BA.C [moved from PWGLF/SPECTRA/Nuclei/B2/macros/B2.C with 65% similarity]
PWGLF/SPECTRA/Nuclei/B2/macros/Config_He3_TPC_LHC10x.C [new file with mode: 0644]
PWGLF/SPECTRA/Nuclei/B2/macros/DrawBA.C [moved from PWGLF/SPECTRA/Nuclei/B2/macros/DrawB2.C with 56% similarity]
PWGLF/SPECTRA/Nuclei/B2/macros/DrawCorr.C
PWGLF/SPECTRA/Nuclei/B2/macros/DrawRatio.C
PWGLF/SPECTRA/Nuclei/B2/macros/LHC10bcde.C
PWGLF/SPECTRA/Nuclei/B2/macros/run.C

similarity index 79%
rename from PWGLF/SPECTRA/Nuclei/B2/AliLnB2.cxx
rename to PWGLF/SPECTRA/Nuclei/B2/AliLnBA.cxx
index dc3468e..dfe18f9 100644 (file)
 #include <TGraphErrors.h>
 #include <TF1.h>
 
-#include "AliLnB2.h"
+#include "AliLnBA.h"
 #include "B2.h"
 
-ClassImp(AliLnB2)
+ClassImp(AliLnBA)
 
-AliLnB2::AliLnB2(const TString& protonSpectra, const TString& protonTag, const TString& nucleusSpectra, const TString& nucleusTag, const TString& outputFilename, const TString& otag, Int_t a, Int_t z)
+AliLnBA::AliLnBA(const TString& protonSpectra, const TString& protonTag, const TString& nucleusSpectra, const TString& nucleusTag, const TString& outputFilename, const TString& otag, Int_t a, Int_t z)
 : TObject()
 , fProtonSpectra(protonSpectra)
 , fProtonTag(protonTag)
@@ -46,14 +46,14 @@ AliLnB2::AliLnB2(const TString& protonSpectra, const TString& protonTag, const T
        this->SetNucleus(a,z);
 }
 
-AliLnB2::~AliLnB2()
+AliLnBA::~AliLnBA()
 {
 //
 // destructor
 //
 }
 
-void AliLnB2::SetNucleus(Int_t a, Int_t z)
+void AliLnBA::SetNucleus(Int_t a, Int_t z)
 {
 //
 // set nucleus mass and name
@@ -73,9 +73,11 @@ void AliLnB2::SetNucleus(Int_t a, Int_t z)
                this->Warning("SetNucleus", "unknown nucleus A = %d, Z = %d", a, z);
                fNucleusName = "Unknown";
        }
+       
+       if(z<0) fNucleusName.Prepend("Anti");
 }
 
-Int_t AliLnB2::Run()
+Int_t AliLnBA::Run()
 {
 //
 // coalescence parameter
@@ -86,18 +88,12 @@ Int_t AliLnB2::Run()
        TFile* finputA = new TFile(fNucleusSpectra.Data(), "read");
        if (finputA->IsZombie()) exit(1);
        
-       TString prefix = "";
-       TString suffix = "";
-       if(fZ < 0)
-       {
-               prefix = "Anti";
-               suffix = "bar";
-       }
-       
        // invariant differential yields
        
-       TGraphErrors* grPrtInvDYieldPt = FindObj<TGraphErrors>(finput1, fProtonTag, prefix + "Proton_InvDiffYield_Pt");
-       TGraphErrors* grNucInvDYieldPt = FindObj<TGraphErrors>(finputA, fNucleusTag, prefix + fNucleusName + "_InvDiffYield_Pt");
+       TString nucleonName = (fZ > 0) ? "Proton" : "AntiProton";
+       
+       TGraphErrors* grPrtInvDYieldPt = FindObj<TGraphErrors>(finput1, fProtonTag, nucleonName + "_InvDiffYield_Pt");
+       TGraphErrors* grNucInvDYieldPt = FindObj<TGraphErrors>(finputA, fNucleusTag, fNucleusName + "_InvDiffYield_Pt");
        
        TFile* foutput = new TFile(fOutputFilename.Data(),"recreate");
        
@@ -106,43 +102,47 @@ Int_t AliLnB2::Run()
        
        // coalescence parameter
        
-       TGraphErrors* grB2Pt = this->GetBAPt(grPrtInvDYieldPt, grNucInvDYieldPt, Form("B2%s_Pt",suffix.Data()));
-       
+       TGraphErrors* grBAPt = this->GetBAPt(grPrtInvDYieldPt, grNucInvDYieldPt, fNucleusName + Form("_B%d_Pt",fA));
        
-       grB2Pt->Write();
+       grBAPt->Write();
        
        // homogeneity volume
-       
-       TGraphErrors* grR3Pt = this->Rside2Rlong(grB2Pt, Form("R3%s_Pt", suffix.Data()), fCd);
-       
-       grR3Pt->Write();
+       TGraphErrors* grR3Pt = 0;
+       if(fA==2)
+       {
+               grR3Pt = this->Rside2Rlong(grBAPt, fNucleusName + "_R3_Pt", fCd);
+               grR3Pt->Write();
+       }
        
        // propagate systematic errors if possible
        
-       TString grPrtName = fProtonTag +  "/" + prefix + "Proton_SystErr_InvDiffYield_Pt;1";
-       TString grNucName = fNucleusTag + "/" + prefix + fNucleusName + "_SystErr_InvDiffYield_Pt;1";
+       TString grPrtName = fProtonTag +  "/" + nucleonName + "_SystErr_InvDiffYield_Pt;1";
+       TString grNucName = fNucleusTag + "/" + fNucleusName + "_SystErr_InvDiffYield_Pt;1";
        
        TGraphErrors* grSystErrPrtInvDYieldPt = dynamic_cast<TGraphErrors*>(finput1->Get(grPrtName.Data()));
-       TGraphErrors* grSystErrNucInvDYieldPt = dynamic_cast<TGraphErrors*>(finput1->Get(grNucName.Data()));
+       TGraphErrors* grSystErrNucInvDYieldPt = dynamic_cast<TGraphErrors*>(finputA->Get(grNucName.Data()));
        
        if( (grSystErrPrtInvDYieldPt != 0) && (grSystErrNucInvDYieldPt != 0) )
        {
-               TGraphErrors* grSystErrB2Pt = this->GetBAPt(grSystErrPrtInvDYieldPt, grSystErrNucInvDYieldPt, Form("SystErr_B2%s_Pt",suffix.Data()));
+               TGraphErrors* grSystErrBAPt = this->GetBAPt(grSystErrPrtInvDYieldPt, grSystErrNucInvDYieldPt, fNucleusName + Form("_SystErr_B%d_Pt",fA));
                
-               grSystErrB2Pt->Write();
-               
-               TGraphErrors* grSystErrR3Pt = this->Rside2Rlong(grSystErrB2Pt, Form("SystErr_R3%s_Pt", suffix.Data()), fCd);
-               grSystErrR3Pt->Write();
+               if(fA==2)
+               {
+                       TGraphErrors* grSystErrR3Pt = this->Rside2Rlong(grSystErrBAPt, fNucleusName + "_SystErr_R3_Pt", fCd);
+                       grSystErrR3Pt->Write();
+                       
+                       delete grSystErrR3Pt;
+               }
                
-               delete grSystErrB2Pt;
-               delete grSystErrR3Pt;
+               grSystErrBAPt->Write();
+               delete grSystErrBAPt;
        }
        else
        {
                this->Warning("Run", "systematic errors are not propagated");
        }
        
-       delete grB2Pt;
+       delete grBAPt;
        delete grR3Pt;
        
        delete foutput;
@@ -152,7 +152,7 @@ Int_t AliLnB2::Run()
        return 0;
 }
 
-TGraphErrors* AliLnB2::GetBAPt(const TGraphErrors* grPrtInvDYieldPt, const TGraphErrors* grNucInvDYieldPt, const TString& name) const
+TGraphErrors* AliLnBA::GetBAPt(const TGraphErrors* grPrtInvDYieldPt, const TGraphErrors* grNucInvDYieldPt, const TString& name) const
 {
 //
 // coalescence parameter
@@ -166,7 +166,7 @@ TGraphErrors* AliLnB2::GetBAPt(const TGraphErrors* grPrtInvDYieldPt, const TGrap
                
                grNucInvDYieldPt->GetPoint(i, ptNuc, yNuc);
                
-               if(ptNuc<0.8) continue; // acceptance
+               if(ptNuc/fA < 0.4) continue; // acceptance
                
                Double_t yPrt = grPrtInvDYieldPt->Eval(ptNuc/fA); // interpolate
                
@@ -188,7 +188,7 @@ TGraphErrors* AliLnB2::GetBAPt(const TGraphErrors* grPrtInvDYieldPt, const TGrap
        return grBAPt;
 }
 
-Double_t AliLnB2::GetErrorY(const TGraphErrors* gr, Double_t x0) const
+Double_t AliLnBA::GetErrorY(const TGraphErrors* gr, Double_t x0) const
 {
 //
 // estimate error of gr(x0) with the closest point to x0
@@ -218,7 +218,7 @@ Double_t AliLnB2::GetErrorY(const TGraphErrors* gr, Double_t x0) const
        return 0;
 }
 
-Double_t AliLnB2::Rside2Rlong(Double_t pt, Double_t B2, Double_t Cd) const
+Double_t AliLnBA::Rside2Rlong(Double_t pt, Double_t B2, Double_t Cd) const
 {
 //
 // Rside^2*Rlong from B2 value
@@ -237,7 +237,7 @@ Double_t AliLnB2::Rside2Rlong(Double_t pt, Double_t B2, Double_t Cd) const
        return r3;
 }
 
-TGraphErrors* AliLnB2::Rside2Rlong(const TGraphErrors* grB2, const TString& name, Double_t Cd) const
+TGraphErrors* AliLnBA::Rside2Rlong(const TGraphErrors* grB2, const TString& name, Double_t Cd) const
 {
 //
 // Rside^2*Rlong from B2 value
similarity index 77%
rename from PWGLF/SPECTRA/Nuclei/B2/AliLnB2.h
rename to PWGLF/SPECTRA/Nuclei/B2/AliLnBA.h
index ab52991..2827003 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef ALILNB2_H
-#define ALILNB2_H
+#ifndef ALILNBA_H
+#define ALILNBA_H
 
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  * See cxx source for full Copyright notice                               */
 
 class TGraphErrors;
 
-class AliLnB2: public TObject
+class AliLnBA: public TObject
 {
   public:
        
-       AliLnB2(const TString& protonSpectra, const TString& nucleusSpectra, const TString& protonTag, const TString& nucleusTag, const TString& outputFilename, const TString& otag, Int_t a, Int_t z);
+       AliLnBA(const TString& protonSpectra, const TString& nucleusSpectra, const TString& protonTag, const TString& nucleusTag, const TString& outputFilename, const TString& otag, Int_t a, Int_t z);
        
-       virtual ~AliLnB2();
+       virtual ~AliLnBA();
        
        TGraphErrors* GetBAPt(const TGraphErrors* grPrtInvDYieldPt, const TGraphErrors* grNucInvDYieldPt, const TString& name) const;
        
+       TString GetNucleusName() const { return fNucleusName; }
+       Int_t GetA() const { return fA; }
+       Int_t GetZ() const { return fZ; }
+       
        Double_t Rside2Rlong(Double_t pt, Double_t B2, Double_t Cd) const;
        TGraphErrors* Rside2Rlong(const TGraphErrors* grB2, const TString& name, Double_t Cd) const;
        
@@ -31,8 +35,8 @@ class AliLnB2: public TObject
        
   private:
  
-       AliLnB2(const AliLnB2& other);
-       AliLnB2& operator=(const AliLnB2& other);
+       AliLnBA(const AliLnBA& other);
+       AliLnBA& operator=(const AliLnBA& other);
        
        Double_t GetErrorY(const TGraphErrors* gr, Double_t x0) const;
        
@@ -52,7 +56,7 @@ class AliLnB2: public TObject
        
        Double_t fCd; // correction factor for homogeneity volume
        
-       ClassDef(AliLnB2,1)
+       ClassDef(AliLnBA,2)
 };
 
-#endif // ALILNB2_H
+#endif // ALILNBA_H
index 62fafc2..320736c 100644 (file)
@@ -30,7 +30,6 @@
 #include "AliLnEfficiency.h"
 #include "AliLnRatio.h"
 #include "AliLnSpectra.h"
-#include "AliLnB2.h"
 #include "AliLnDriver.h"
 #include "B2.h"
 
index 6a14cb4..62758b5 100644 (file)
@@ -75,9 +75,7 @@ class AliLnDriver: public TObject
        void SetSameFeedDownCorr(Bool_t flag=1) { fSameFdwn = flag; }
        
        void SetPidProcedure(Int_t proc) { fPidProc=proc; }
-       
        void SetPidEfficiency(Double_t eff) { fPidEff=eff; }
-       
        void SetAddFakeTracks(Bool_t flag=1) { fAddFakeTracks = flag; }
        
        void SetDebugLevel(Int_t level) { fDebugLevel = level; }
@@ -94,7 +92,6 @@ class AliLnDriver: public TObject
        TString fOutputCorTag;  // tag for correction file
        
        Double_t fTrigEff[3];   // trigger efficiency, stat. and syst. errors
-       Double_t fXsec[3];      // total inelastic cross section, stat. and syst. errors
        Bool_t  fIsOnlyGen;     // if it is only generation
        Bool_t  fINEL;          // extrapolate to inelastic events
        
@@ -108,7 +105,7 @@ class AliLnDriver: public TObject
        Double_t fPtMax;        // maximum pt value
        Bool_t   fPid;          // enable pid correction
        Double_t fPidPt;        // minimum pt value for pid correction
-       Bool_t   fSecondaries;  // correction of secondaries
+       Bool_t   fSecondaries;  // enable correction of secondaries
        Int_t    fSecProc;      // procedure to estimate fractions
        Int_t    fMatDCAxyMod;  // DCAxy model for correction of secondaries
        Bool_t   fANucTemplate; // enable antinucleus as template for primaries
@@ -121,7 +118,7 @@ class AliLnDriver: public TObject
        Double_t fBkgMax;       // upper limit for removing background
        Double_t fIntMin;       // lower limit for integration
        Double_t fIntMax;       // upper limit for integration
-       Bool_t   fEfficiency;   // efficiency correction
+       Bool_t   fEfficiency;   // enable efficiency correction
        Bool_t   fG3Fluka;      // enable G3/Fluka correction for TPC
        Double_t fScMat;        // scaling factor for material fraction
        Double_t fScFd;         // scaling factor for feed-down fraction
@@ -138,16 +135,16 @@ class AliLnDriver: public TObject
        TString fOutputPtCorrDebug; // output filename for debugging pt corrections
        TString fOutputPtDebug;     // output filename for debugging pt
        
-       Bool_t fFitFrac;        // fit for fraction of secondaries
+       Bool_t fFitFrac;        // enable fit to fractions
        Bool_t fFdwnCorr;       // enable feed-down correction
        Bool_t fSameFdwn;       // same feed-down correction for positives and negatives
        Bool_t fMCtoINEL;       // MC to extrapolate to inel or for triggering events
        
        Bool_t fAddFakeTracks;  // include fake tracks in the efficiency and templates
        
-       Int_t fPidProc;  // pid procedure on the pt distribution
+       Int_t fPidProc;  // pid procedure for the pt distribution
        
-       Double_t fPidEff;  // pid efficiency for all pt
+       Double_t fPidEff;  // pid efficiency for all pt bins
        
        Int_t fDebugLevel; // 0 no verbose, > 1 verbose
        
index 9cd3368..d739d14 100644 (file)
@@ -79,6 +79,39 @@ TString GetCollSystem(const TString& period)
        return "unknown";
 }
 
+void GetInelXSection(Double_t xsection[3], const TString& period)
+{
+//
+// inelastic cross section in mb and largest stat. and syst error
+// measured by ALICE for the given colliding system
+// http://arxiv.org/abs/1208.4968
+//
+       TString collsystem = GetCollSystem(period);
+       
+       if( collsystem == "pp0.9TeV" )
+       {
+               xsection[0] = 50.3;
+               xsection[1] = 0.4;
+               xsection[2] = 1.0;
+       }
+       else if( collsystem == "pp2.76TeV" )
+       {
+               xsection[0] = 62.8;
+               xsection[1] = 4.0;
+               xsection[2] = 4.6;
+       }
+       else if( collsystem == "pp7TeV" )
+       {
+               xsection[0] = 73.2;
+               xsection[1] = 1.2;
+               xsection[2] = 2.6;
+       }
+       else
+       {
+               std::cerr << "Warning: unknown colliding system " << collsystem << " for period " << period << std::endl;
+       }
+}
+
 void GetTriggerEfficiency(Double_t trigeff[3], const TString& trigname, const TString& period)
 {
 //
index 473e036..1ef34be 100644 (file)
@@ -24,7 +24,7 @@
 #include <TString.h>
 #include <TFile.h>
 #include <TGraphErrors.h>
-#include "AliLnB2.h"
+#include "AliLnBA.h"
 #endif
 
 #include "B2.h"
@@ -63,9 +63,7 @@ Int_t B2Mult(  const TString& pSpectra     = "~/alice/output/Proton-lhc10d-Mult-
        const Int_t kNMinPt = 0;
        const Int_t kNMaxPt = 6;
        
-       const TString kPrefix[] = { "", "Anti"};
-       const TString kSuffix[] = { "", "bar" };
-       Int_t kCharge[]         = {1, -1};
+       const TString kNucleus[kNpart] = { "Deuteron", "AntiDeuteron" };
        
        // B2 as a function of pt for each multiplicity class
        
@@ -73,19 +71,20 @@ Int_t B2Mult(  const TString& pSpectra     = "~/alice/output/Proton-lhc10d-Mult-
        {
                TFileMerger m;
                
+               const Int_t kZ[kNpart] = { 1, -1 };
+               const TString kB2File[kNpart] = {"B2.root", "AntiB2.root" };
+               
                for(Int_t j=0; j<kNpart; ++j)
                {
-                       TString b2file = kPrefix[j] + "B2.root";
-                       
                        cout << kMultTag[i] << endl;
                        
-                       AliLnB2 b2(pSpectra, ptag + kMultTag[i], dSpectra, dtag + kMultTag[i], b2file, otag + kMultTag[i], 2, kCharge[j]);
+                       AliLnBA b2(pSpectra, ptag + kMultTag[i], dSpectra, dtag + kMultTag[i], kB2File[j], otag + kMultTag[i], 2, kZ[j]);
                        
                        b2.SetCd(GetCd(kKNOmult[i]));
                        
                        b2.Run();
                        
-                       m.AddFile(b2file.Data(),0);
+                       m.AddFile(kB2File[j].Data(),0);
                }
                
                // merge B2 and B2bar
@@ -95,7 +94,7 @@ Int_t B2Mult(  const TString& pSpectra     = "~/alice/output/Proton-lhc10d-Mult-
                m.OutputFile(outputfile.Data());
                m.Merge();
                
-               gSystem->Exec("rm -f B2.root AntiB2.root");
+               gSystem->Exec(Form("rm -f %s %s",kB2File[0].Data(),kB2File[1].Data()));
        }
        
        // merge multiplicity classes
@@ -132,11 +131,11 @@ Int_t B2Mult(  const TString& pSpectra     = "~/alice/output/Proton-lhc10d-Mult-
        {
                for(Int_t j=0; j<kNmult; ++j)
                {
-                       grB2pt[i][j] = FindObj<TGraphErrors>(finput, otag + kMultTag[j], Form("B2%s_Pt", kSuffix[i].Data()));
-                       grR3pt[i][j] = FindObj<TGraphErrors>(finput, otag + kMultTag[j], Form("R3%s_Pt", kSuffix[i].Data()));
+                       grB2pt[i][j] = FindObj<TGraphErrors>(finput, otag + kMultTag[j], kNucleus[j] + "_B2_Pt");
+                       grR3pt[i][j] = FindObj<TGraphErrors>(finput, otag + kMultTag[j], kNucleus[j] + "_R3_Pt");
                        
-                       grSysB2pt[i][j] = FindObj<TGraphErrors>(finput, otag + kMultTag[j], Form("SystErr_B2%s_Pt", kSuffix[i].Data()));
-                       grSysR3pt[i][j] = FindObj<TGraphErrors>(finput, otag + kMultTag[j], Form("SystErr_R3%s_Pt", kSuffix[i].Data()));
+                       grSysB2pt[i][j] = FindObj<TGraphErrors>(finput, otag + kMultTag[j], kNucleus[j] + "_SystErr_B2_Pt");
+                       grSysR3pt[i][j] = FindObj<TGraphErrors>(finput, otag + kMultTag[j], kNucleus[j] + "_SystErr_R3_Pt");
                }
        }
        
@@ -190,19 +189,19 @@ Int_t B2Mult(  const TString& pSpectra     = "~/alice/output/Proton-lhc10d-Mult-
                        }
                        
                        TGraphErrors* grB2Mult = new TGraphErrors(kNmult, kKNOmult, B2, kKNOmultErr, B2StatErr);
-                       grB2Mult->SetName(Form("B2%s_Zmult", kSuffix[i].Data()));
+                       grB2Mult->SetName(Form("%s_B2_Zmult", kNucleus[i].Data()));
                        
                        TGraphErrors* grR3Mult = new TGraphErrors(kNmult, kKNOmult, R3, kKNOmultErr, R3StatErr);
-                       grR3Mult->SetName(Form("R3%s_Zmult", kSuffix[i].Data()));
+                       grR3Mult->SetName(Form("%s_R3_Zmult", kNucleus[i].Data()));
                        
                        Double_t zMultSystErr[kNmult];
                        for(Int_t k=0; k<kNmult; ++k) zMultSystErr[k]=0.07;
                        
                        TGraphErrors* grSysB2Mult = new TGraphErrors(kNmult, kKNOmult, B2, zMultSystErr, B2SystErr);
-                       grSysB2Mult->SetName(Form("SystErr_B2%s_Zmult", kSuffix[i].Data()));
+                       grSysB2Mult->SetName(Form("%s_SystErr_B2_Zmult", kNucleus[i].Data()));
                        
                        TGraphErrors* grSysR3Mult = new TGraphErrors(kNmult, kKNOmult, R3, zMultSystErr, R3SystErr);
-                       grSysR3Mult->SetName(Form("SystErr_R3%s_Zmult", kSuffix[i].Data()));
+                       grSysR3Mult->SetName(Form("%s_SystErr_R3_Zmult", kNucleus[i].Data()));
                        
                        foutput->cd(ptLabel[j].Data());
                        
@@ -232,18 +231,18 @@ Int_t B2Mult(  const TString& pSpectra     = "~/alice/output/Proton-lhc10d-Mult-
        
        for(Int_t i=0; i<kNpart; ++i)
        {
-               gROOT->ProcessLine(Form(".x DrawDir.C+g(\"%s\",\"B2%s_Pt\",\"\",0,2, 1.e-3, 7.e-2,\"p_{T}/A (GeV/c)\",\"B_{2} (GeV^{2}/c^{3})\", 0,\"c%d.B2pt\",\"B2%spt\")", outputMultPt.Data(), kSuffix[i].Data(), i, kSuffix[i].Data()));
+               gROOT->ProcessLine(Form(".x DrawDir.C+g(\"%s\",\"%s_B2_Pt\",\"\",0,2, 1.e-3, 7.e-2,\"p_{T}/A (GeV/c)\",\"B_{2} (GeV^{2}/c^{3})\", 0,\"c%d.B2pt\",\"%s_B2_Pt\")", outputMultPt.Data(), kNucleus[i].Data(), i, kNucleus[i].Data()));
                
-               gROOT->ProcessLine(Form(".x DrawDir.C+g(\"%s\",\"R3%s_Pt\",\"\",0,2, 0, 1.7,\"p_{T}/A (GeV/c)\",\"R_{side}^{2} R_{long} (fm^{3})\", 0,\"c%d.R3pt\",\"R3%spt\")", outputMultPt.Data(), kSuffix[i].Data(), i, kSuffix[i].Data()));
+               gROOT->ProcessLine(Form(".x DrawDir.C+g(\"%s\",\"%s_R3_Pt\",\"\",0,2, 0, 1.7,\"p_{T}/A (GeV/c)\",\"R_{side}^{2} R_{long} (fm^{3})\", 0,\"c%d.R3pt\",\"%s_R3_Pt\")", outputMultPt.Data(), kNucleus[i].Data(), i, kNucleus[i].Data()));
        }
        
        // draw B2 as a function of z
        
        for(Int_t i=0; i<kNpart; ++i)
        {
-               gROOT->ProcessLine(Form(".x DrawDir.C+g(\"%s\",\"B2%s_Zmult\",\"\",0,5, 3.e-3, 6.e-2,\"z\",\"B_{2} (GeV^{2}/c^{3})\", 0,\"c%d.B2z\",\"B2%sZ\")", outputPtMult.Data(), kSuffix[i].Data(), i, kSuffix[i].Data()));
+               gROOT->ProcessLine(Form(".x DrawDir.C+g(\"%s\",\"%s_B2_Zmult\",\"\",0,5, 3.e-3, 6.e-2,\"z\",\"B_{2} (GeV^{2}/c^{3})\", 0,\"c%d.B2z\",\"%s_B2_Zmult\")", outputPtMult.Data(), kNucleus[i].Data(), i, kNucleus[i].Data()));
                
-               gROOT->ProcessLine(Form(".x DrawDir.C+g(\"%s\",\"R3%s_Zmult\",\"\",0,5, 0, 4,\"z\",\"R_{side}^{2} R_{long} (fm^{3})\", 0,\"c%d.R3z\",\"R3%sZ\")", outputPtMult.Data(), kSuffix[i].Data(), i, kSuffix[i].Data()));
+               gROOT->ProcessLine(Form(".x DrawDir.C+g(\"%s\",\"%s_R3_Zmult\",\"\",0,5, 0, 4,\"z\",\"R_{side}^{2} R_{long} (fm^{3})\", 0,\"c%d.R3z\",\"%s_R3_Zmult\")", outputPtMult.Data(), kNucleus[i].Data(), i, kNucleus[i].Data()));
        }
        
        return 0;
similarity index 65%
rename from PWGLF/SPECTRA/Nuclei/B2/macros/B2.C
rename to PWGLF/SPECTRA/Nuclei/B2/macros/BA.C
index a935e47..f2e9011 100644 (file)
 // author: Eulogio Serradilla <eulogio.serradilla@cern.ch>
 
 #if !defined(__CINT__) || defined(__MAKECINT__)
+#include <Riostream.h>
 #include <TSystem.h>
 #include <TROOT.h>
 #include <TFileMerger.h>
 #include <TString.h>
-#include "AliLnB2.h"
+#include "AliLnBA.h"
 #endif
 
-Int_t B2(  const TString& pSpectra   = "~/alice/output/Proton-lhc10d-Spectra.root"
+Int_t BA(  const TString& pSpectra   = "~/alice/output/Proton-lhc10d-Spectra.root"
          , const TString& dSpectra   = "~/alice/output/Deuteron-lhc10d-Spectra.root"
          , const TString& ptag       = "lhc10d"
          , const TString& dtag       = "lhc10d"
@@ -33,37 +34,61 @@ Int_t B2(  const TString& pSpectra   = "~/alice/output/Proton-lhc10d-Spectra.roo
          , const Bool_t   draw       = 1)
 {
 //
-// coalescence parameter
+// coalescence parameter for nucleus and antinucleus
 //
-       const Int_t kNpart      = 2;
-       const TString kPrefix[] = { "", "Anti" };
-       const Int_t kCharge[]   = { 1, -1 };
+       using namespace std;
+       
+       Int_t A = 2;
+       Int_t Z = 1;
+       
+       if(nucleus == "Deuteron")
+       {
+               A = 2;
+               Z = 1;
+       }
+       else if(nucleus == "Triton")
+       {
+               A = 3;
+               Z = 1;
+       }
+       else if(nucleus == "He3")
+       {
+               A = 3;
+               Z = 2;
+       }
+       else
+       {
+               cerr << "only valid names: Deuteron, Triton and He3" << endl;
+               return 1;
+       }
+       
+       const Int_t kNpart = 2;
+       const Int_t kZ[kNpart] = { Z, -Z };
+       const TString kB2File[kNpart] = {"BA.root", "AntiBA.root" };
        
        TFileMerger m;
        
        for(Int_t i=0; i<kNpart; ++i)
        {
-               TString b2file = kPrefix[i] + "B2.root";
-               
-               AliLnB2 b2(pSpectra, ptag, dSpectra, dtag, b2file, otag, 2, kCharge[i]);
+               AliLnBA b2(pSpectra, ptag, dSpectra, dtag, kB2File[i], otag, A, kZ[i]);
                
                b2.Run();
                
-               m.AddFile(b2file.Data(),0);
+               m.AddFile(kB2File[i].Data(),0);
        }
        
        m.OutputFile(outputfile.Data());
        m.Merge();
        
-       gSystem->Exec("rm -f B2.root AntiB2.root");
-       
-       // draw
+       gSystem->Exec(Form("rm -f %s %s", kB2File[0].Data(), kB2File[1].Data()));
        
        if(!draw) return 0;
        
+       const TString kNucleus[kNpart] = { nucleus, Form("Anti%s",nucleus.Data())};
+       
        for(Int_t i=0; i<kNpart; ++i)
        {
-               gROOT->ProcessLine(Form(".x DrawB2.C+g(\"%s\",\"%s\",\"%s\")", outputfile.Data(), otag.Data(), kPrefix[i].Data()));
+               gROOT->ProcessLine(Form(".x DrawBA.C+g(\"%s\",\"%s\",\"%s\")", outputfile.Data(), otag.Data(), kNucleus[i].Data()));
        }
        
        return 0;
diff --git a/PWGLF/SPECTRA/Nuclei/B2/macros/Config_He3_TPC_LHC10x.C b/PWGLF/SPECTRA/Nuclei/B2/macros/Config_He3_TPC_LHC10x.C
new file mode 100644 (file)
index 0000000..bef85b8
--- /dev/null
@@ -0,0 +1,126 @@
+/**************************************************************************\r
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r
+ *                                                                        *\r
+ * Author: The ALICE Off-line Project.                                    *\r
+ * Contributors are mentioned in the code where appropriate.              *\r
+ *                                                                        *\r
+ * Permission to use, copy, modify and distribute this software and its   *\r
+ * documentation strictly for non-commercial purposes is hereby granted   *\r
+ * without fee, provided that the above copyright notice appears in all   *\r
+ * copies and that both the copyright notice and this permission notice   *\r
+ * appear in the supporting documentation. The authors make no claims     *\r
+ * about the suitability of this software for any purpose. It is          *\r
+ * provided "as is" without express or implied warranty.                  *\r
+ **************************************************************************/\r
+\r
+// LHC10x config for He3 and AntiHe3\r
+// author: Eulogio Serradilla <eulogio.serradilla@cern.ch>\r
+\r
+#if !defined(__CINT__) || defined(__MAKECINT__)\r
+#include <TROOT.h>\r
+#include <TString.h>\r
+#include "AliLnDriver.h"\r
+#endif\r
+\r
+#include "Config.h"\r
+\r
+Int_t Config_He3_TPC_LHC10x(  const TString& inputDir   = "~/alice/input"\r
+                            , const TString& outputDir  = "~/alice/output"\r
+                            , const TString& period     = "lhc10bcde"\r
+                            , const TString& outputTag  = "pp-mband-7TeV"\r
+                            , const TString& trkselTag  = "-tpc3-nsd-moc-vbin"\r
+                            , const TString& multTag    = ""\r
+                            , const TString& multCorTag = ""\r
+                            , Double_t ymax             = 0.5\r
+                            , Bool_t   inel             = kFALSE\r
+                            , Bool_t   drawOutput       = kTRUE\r
+                            , Double_t ptmin            = 0.4  // GeV/c\r
+                            , Double_t ptmax            = 10.  // GeV/c\r
+                            , Bool_t   makeStats        = kTRUE\r
+                            , Bool_t   makeCor          = kTRUE\r
+                            , Bool_t   makePt           = kTRUE\r
+                            , Bool_t   makeRatio        = kTRUE\r
+                            , Bool_t   makeSpectra      = kTRUE )\r
+{\r
+//\r
+// lhc10b, lhc10c, lhc10d, lhc10e config for He3 and AntiHe3\r
+// (TPC)\r
+//\r
+       const TString  kSpecies         = "He3";\r
+       const TString  kTrkSel          = "its_tpc_dca";\r
+       const TString  kTrigName        = "mband";\r
+       const Bool_t   kMCtoINEL        = kTRUE;\r
+       const Double_t kPidEff          = 1.;\r
+       const Bool_t   kSecondaries     = kFALSE;\r
+       const Int_t    kSecProc         = 1; // 0 tff, 1 mc\r
+       const Int_t    kMatDCAxyMod     = 1; // 0 geant, 1 flat\r
+       const Bool_t   kAntiNucTemplate = kFALSE;\r
+       const Int_t    kNbin            = 5;\r
+       const Double_t kDCAxy[2]        = {-0.2, 0.2};\r
+       const Bool_t   kEfficiency      = kTRUE;\r
+       const Int_t    kDebugLevel      = 1;\r
+       \r
+       Double_t trigEff[3];\r
+       GetTriggerEfficiency(trigEff, kTrigName, period);\r
+       \r
+       // input and output filenames\r
+       \r
+       TString inputData     = inputDir + "/" + period + "/" + MakeInputName(kSpecies, period, kTrkSel+trkselTag+multTag) + ".root";\r
+       TString inputSimu     = inputDir + "/" + period + "/" + MakeSimuName(kSpecies, period, kTrkSel+trkselTag+multCorTag) + ".root";\r
+       TString inputSimuFix  = inputDir + "/" + period + "/" + MakeSimuFixName(kSpecies, period, kTrkSel+trkselTag+multCorTag) + ".root";\r
+       TString inputCorr     = inputDir + "/" + period + "/" + MakeInputName(kSpecies, period, kTrkSel+trkselTag+multTag) + "-corr.root";\r
+       \r
+       TString outputPt      = outputDir + "/" + MakeOutputName(kSpecies, outputTag) + "-Pt.root";\r
+       TString outputRatio   = outputDir + "/" + MakeOutputName(kSpecies, outputTag) + "-Ratio.root";\r
+       TString outputSpectra = outputDir + "/" + MakeOutputName(kSpecies, outputTag) + "-Spectra.root";\r
+       \r
+       // configure the driver and run\r
+       \r
+       AliLnDriver driver;\r
+       \r
+       driver.SetSpecies(kSpecies);\r
+       \r
+       driver.SetInputFilenames(inputData, inputSimu, inputSimuFix, inputCorr);\r
+       driver.SetOutputFilenames(outputPt, outputRatio, outputSpectra);\r
+       \r
+       driver.SetRapidityInterval(-ymax,ymax);\r
+       \r
+       driver.SetOutputTag(outputTag);\r
+       driver.SetOutputCorTag(outputTag);\r
+       \r
+       driver.SetTriggerEfficiency(trigEff);\r
+       driver.SetExtrapolateToINEL(inel);\r
+       driver.SetMCtoINEL(kMCtoINEL);\r
+       driver.SetPtInterval(ptmin, ptmax);\r
+       driver.SetPid(0);\r
+       driver.SetPidEfficiency(kPidEff);\r
+       driver.SetSecondaries(kSecondaries);\r
+       driver.SetSecProcedure(kSecProc);\r
+       driver.SetMatDCAxyModel(kMatDCAxyMod);\r
+       driver.SetAntiNucleusAsTemplate(kAntiNucTemplate);\r
+       driver.SetNBin(kNbin);\r
+       driver.SetDCAxyInterval(kDCAxy[0], kDCAxy[1]);\r
+       driver.SetEfficiency(kEfficiency,0);\r
+       \r
+       driver.SetMakeStats(makeStats);\r
+       driver.SetMakeCorrections(makeCor);\r
+       driver.SetMakePt(makePt);\r
+       driver.SetMakeRatio(makeRatio);\r
+       driver.SetMakeSpectra(makeSpectra);\r
+       \r
+       driver.SetDebugLevel(kDebugLevel);\r
+       \r
+       driver.Run();\r
+       \r
+       // draw output\r
+       \r
+       if(!drawOutput) return 0;\r
+       \r
+       DrawOutputCorr(kSpecies, inputCorr, driver.GetOutputCorrTag());\r
+       \r
+       DrawPtDebug(driver.GetPtDebugFilename(), outputTag, kSpecies, 0);\r
+       DrawOutputRatio(outputRatio, outputTag, kSpecies);\r
+       DrawOutputSpectra(outputSpectra, outputTag, kSpecies);\r
+       \r
+       return 0;\r
+}\r
similarity index 56%
rename from PWGLF/SPECTRA/Nuclei/B2/macros/DrawB2.C
rename to PWGLF/SPECTRA/Nuclei/B2/macros/DrawBA.C
index 47a2479..a303d94 100644 (file)
@@ -13,7 +13,7 @@
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-// Draw B2
+// Draw BA
 // author: Eulogio Serradilla <eulogio.serradilla@cern.ch>
 
 #if !defined(__CINT__) || defined(__MAKECINT__)
 
 #include "B2.h"
 
-void DrawB2(const TString& inputFile="b2.root", const TString& tag="test", const TString& prefix="", const TString& species="Deuteron")
+void DrawBA(const TString& inputFile="b2.root", const TString& tag="test", const TString& nucleus="Deuteron")
 {
 //
-// Draw B2
+// Draw B2, B3
 //
        gStyle->SetPadTickX(1);
        gStyle->SetPadTickY(1);
@@ -39,39 +39,40 @@ void DrawB2(const TString& inputFile="b2.root", const TString& tag="test", const
        TFile* finput = new TFile(inputFile.Data());
        if (finput->IsZombie()) exit(1);
        
-       TString nucleus = prefix + species;
-       TString suffix = "";
-       if(prefix=="Anti") suffix="bar";
+       Int_t A = (nucleus.Contains("Deuteron")) ? 2 : 3;
        
-       TCanvas* c0 = new TCanvas(Form("%s.B2", nucleus.Data()), Form("Coalescence parameter for %s", nucleus.Data()));
+       TCanvas* c0 = new TCanvas(Form("%s.B%d", nucleus.Data(),A), Form("Coalescence parameter for %s", nucleus.Data()));
        
-       c0->Divide(2,1);
+       if(A==2) c0->Divide(2,1);
        
-       // B2
+       // BA
        
-       TGraphErrors* grB2Pt = FindObj<TGraphErrors>(finput, tag, Form("B2%s_Pt",suffix.Data()));
+       TGraphErrors* grBAPt = FindObj<TGraphErrors>(finput, tag, nucleus + Form("_B%d_Pt",A));
        
-       c0->cd(1);
+       if(A==2) c0->cd(1);
        gPad->SetLogy(1);
        
-       grB2Pt->GetXaxis()->SetTitle("#it{p}_{T}/A (GeV/#it{c})");
-       grB2Pt->GetYaxis()->SetTitle("#it{B}_{2} (GeV^{2}#it{c}^{-3})");
-       grB2Pt->SetLineColor(kRed);
-       grB2Pt->SetMarkerStyle(kFullCircle);
-       grB2Pt->SetMarkerColor(kRed);
-       grB2Pt->Draw("zAP");
+       grBAPt->GetXaxis()->SetTitle("#it{p}_{T}/A (GeV/#it{c})");
+       grBAPt->GetYaxis()->SetTitle("#it{B}_{2} (GeV^{2}/#it{c}^{3})");
+       if(A==3) grBAPt->GetYaxis()->SetTitle("#it{B}_{3} (GeV^{4}/#it{c}^{6})");
+       grBAPt->SetLineColor(kRed);
+       grBAPt->SetMarkerStyle(kFullCircle);
+       grBAPt->SetMarkerColor(kRed);
+       grBAPt->Draw("zAP");
        
        // homogeneity volume
-       
-       TGraphErrors* grR3Pt = FindObj<TGraphErrors>(finput, tag, Form("R3%s_Pt",suffix.Data()));
-       
-       c0->cd(2);
-       
-       grR3Pt->GetXaxis()->SetTitle("#it{p}_{T}/A (GeV/#it{c})");
-       grR3Pt->GetYaxis()->SetTitle("#it{R}_{side}^{2} #it{R}_{long} (fm^{3})");
-       grR3Pt->GetYaxis()->SetTitleOffset(1.3);
-       grR3Pt->SetLineColor(kRed);
-       grR3Pt->SetMarkerStyle(kFullCircle);
-       grR3Pt->SetMarkerColor(kRed);
-       grR3Pt->Draw("zAP");
+       if(A==2)
+       {
+               TGraphErrors* grR3Pt = FindObj<TGraphErrors>(finput, tag, nucleus + "_R3_Pt");
+               
+               c0->cd(2);
+               
+               grR3Pt->GetXaxis()->SetTitle("#it{p}_{T}/A (GeV/#it{c})");
+               grR3Pt->GetYaxis()->SetTitle("#it{R}_{side}^{2} #it{R}_{long} (fm^{3})");
+               grR3Pt->GetYaxis()->SetTitleOffset(1.3);
+               grR3Pt->SetLineColor(kRed);
+               grR3Pt->SetMarkerStyle(kFullCircle);
+               grR3Pt->SetMarkerColor(kRed);
+               grR3Pt->Draw("zAP");
+       }
 }
index 401edcb..f5daa28 100644 (file)
@@ -56,14 +56,16 @@ void DrawCorr(const TString& species="Deuteron", const TString& inputFile="corre
        TCanvas* c2 = new TCanvas(Form("%s.Efficiency",species.Data()), Form("Reconstruction Efficiency for (Anti)%ss",species.Data()));
        c2->Divide(2,2);
        
+       TH1D* hEffTrigPt[kNpart];
        TH1D* hEffVtxPt[kNpart];
+       TH1D* hEffAccPt[kNpart];
        TH1D* hEffAccTrkPt[kNpart];
-       TH1D* hEffTrigPt[kNpart];
        
        for(Int_t i=0; i<kNpart; ++i)
        {
                hEffTrigPt[i] = FindObj<TH1D>(finput, tag, kPrefix[i] + species + "_Eff_Trig_Pt");
                hEffVtxPt[i] = FindObj<TH1D>(finput, tag, kPrefix[i] + species + "_Eff_Vtx_Pt");
+               hEffAccPt[i] = FindObj<TH1D>(finput, tag, kPrefix[i] + species + "_Eff_Acc_Pt");
                hEffAccTrkPt[i] = FindObj<TH1D>(finput, tag, kPrefix[i] + species + "_Eff_AccTrk_Pt");
        }
        
@@ -74,6 +76,9 @@ void DrawCorr(const TString& species="Deuteron", const TString& inputFile="corre
        DrawPair(hEffVtxPt[0], hEffVtxPt[1], xmin, xmax, 0, 1.1);
        
        c2->cd(3);
+       DrawPair(hEffAccPt[0], hEffAccPt[1], xmin, xmax, 0, 1.1);
+       
+       c2->cd(4);
        DrawPair(hEffAccTrkPt[0], hEffAccTrkPt[1], xmin, xmax, 0, 1.1);
        
        // Secondaries
index c5ed9ea..30425ac 100644 (file)
@@ -49,11 +49,11 @@ void DrawRatio(const TString& inputFile="pt.root", const TString& tag="test", co
        // antiparticle/particle ratio
        
        TString ytitle = "Negative/Positive";
-       if(species=="Proton")        ytitle = "#bar{p}/p";
-       else if(species=="Deuteron") ytitle = "#bar{d}/d";
-       else if(species=="Triton")   ytitle = "#bar{t}/t";
-       else if(species=="He3")      ytitle = "#bar{He3}/He3";
-       else if(species=="Alpha")    ytitle = "#bar{#alpha}/#alpha";
+       if(species=="Proton")        ytitle = "#bar{p} / p";
+       else if(species=="Deuteron") ytitle = "#bar{d} / d";
+       else if(species=="Triton")   ytitle = "#bar{t} / t";
+       else if(species=="He3")      ytitle = "{}^{3}#bar{He} / {}^{3}He";
+       else if(species=="Alpha")    ytitle = "#bar{#alpha} / #alpha";
        
        TH1D* hRatioPt = FindObj<TH1D>(finput, tag, Form("Anti%s%s_Ratio_Pt", species.Data(), species.Data()));
        
index 79bcc9d..afe36a8 100644 (file)
@@ -34,9 +34,13 @@ Int_t LHC10bcde(  const TString& species    = "Deuteron"
                 , const TString& trkselTag  = "-tpc3-nsd-moc"\r
                 , const TString& multTag    = ""\r
                 , const TString& multCorTag = ""\r
-                , Double_t       ymax       = 0.5\r
+                , Double_t ymax             = 0.5\r
                 , Bool_t inel               = 0  // for mult\r
                 , Bool_t drawOutput         = 1  // for batch\r
+                , Double_t ptmin            = 0.8\r
+                , Double_t ptmax            = 3.2\r
+                , Double_t ptjoint          = 1.0\r
+                , Double_t ptpid            = 1.4\r
                 , Int_t option              = 2)\r
 {\r
 //\r
@@ -46,17 +50,12 @@ Int_t LHC10bcde(  const TString& species    = "Deuteron"
        const TString kPeriod[kNper]    = { "lhc10b", "lhc10c", "lhc10d", "lhc10e" };\r
        const TString kOutputTag[kNper] = { "lhc10b", "lhc10c", "lhc10d", "lhc10e" };\r
        \r
-       Double_t ptmin   = (species=="Proton") ? 0.4 : 0.7;\r
-       Double_t ptjoint = (species=="Proton") ? 1.0 : 1.0;\r
-       Double_t ptmax   = (species=="Proton") ? 2.0 : 3.0;\r
-       Double_t ptpid   = (species=="Proton") ? 3.5 : 1.6;\r
-       \r
        using namespace std;\r
        \r
-       if( (option<0) || (option>2) || ((species != "Proton") && (species != "Deuteron")))\r
+       if( (option<0) || (option>2))\r
        {\r
-               cerr << "unknown species/option: " << species << "/" << option << endl;\r
-               cerr << "species: Proton or Deuteron, options: 0 (TPC), 1 (TOF), 2 (TPCTOF)" << endl;\r
+               cerr << "unknown option: " << option << endl;\r
+               cerr << "valid options : 0 (TPC), 1 (TOF), 2 (TPCTOF)" << endl;\r
                exit(1);\r
        }\r
        \r
@@ -78,11 +77,11 @@ Int_t LHC10bcde(  const TString& species    = "Deuteron"
                {\r
                        case 0:\r
                                cout << "Config_" << species << "_TPC_LHC10x.C" << endl << endl;\r
-                               gROOT->ProcessLine(Form(".x Config_%s_TPC_LHC10x.C+g(\"%s\", %f, %d, 0)", species.Data(), arg.Data(), ymax, inel));\r
+                               gROOT->ProcessLine(Form(".x Config_%s_TPC_LHC10x.C+g(\"%s\", %f, %d, 0, %f, %f,1,1,1,1,1)", species.Data(), arg.Data(), ymax, inel, ptmin, ptmax));\r
                                break;\r
                        case 1:\r
                                cout << "Config_" << species << "_LHC10x.C" << endl << endl;\r
-                               gROOT->ProcessLine(Form(".x Config_%s_TOF_LHC10x.C+g(\"%s\", %f, %d, 0)", species.Data(), arg.Data(), ymax, inel));\r
+                               gROOT->ProcessLine(Form(".x Config_%s_TOF_LHC10x.C+g(\"%s\", %f, %d, 0, %f, %f, %f,1,1,1,1,1)", species.Data(), arg.Data(), ymax, inel, ptmin, ptmax, ptpid));\r
                                break;\r
                        case 2:\r
                                cout << "Config_TPCTOF_LHC10x.C" << endl << endl;\r
index 669fdd4..e81cb63 100644 (file)
@@ -19,7 +19,7 @@ Int_t run(const TString& config)
        gROOT->LoadMacro("$ALICE_ROOT/PWGLF/SPECTRA/Nuclei/B2/AliLnPt.cxx+g");
        gROOT->LoadMacro("$ALICE_ROOT/PWGLF/SPECTRA/Nuclei/B2/AliLnRatio.cxx+g");
        gROOT->LoadMacro("$ALICE_ROOT/PWGLF/SPECTRA/Nuclei/B2/AliLnSpectra.cxx+g");
-       gROOT->LoadMacro("$ALICE_ROOT/PWGLF/SPECTRA/Nuclei/B2/AliLnB2.cxx+g");
+       gROOT->LoadMacro("$ALICE_ROOT/PWGLF/SPECTRA/Nuclei/B2/AliLnBA.cxx+g");
        gROOT->LoadMacro("$ALICE_ROOT/PWGLF/SPECTRA/Nuclei/B2/AliLnDriver.cxx+g");
        gROOT->LoadMacro("$ALICE_ROOT/PWGLF/SPECTRA/Nuclei/B2/macros/RatioMult.C+g");