ROOT logo
AliRoot » PWGCF » EBYE » BALANCEFUNCTIONS » AliBalanceEventMixing

class AliBalanceEventMixing: public TObject

           Balance Function class
   This is the class to deal with the Balance Function analysis
   Origin: Panos Christakoglou, UOA-CERN, Panos.Christakoglou@cern.ch
   Modified: Michael Weber, m.weber@cern.ch

Function Members (Methods)

public:
AliBalanceEventMixing()
AliBalanceEventMixing(const AliBalanceEventMixing& balance)
virtual~AliBalanceEventMixing()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
voidCalculateBalance(Float_t fCentrality, vector<Double_t>** chargeVector, Int_t iMainTrack = -1, Float_t bSign = 0.)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
TGraphErrors*DrawBalance(Int_t fAnalysisType)
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
const char*GetAnalysisLevel()
Double_tGetBalance(Int_t a, Int_t p2)
TH1D*GetBalanceFunctionHistogram(Int_t iAnalysisType, Double_t centrMin, Double_t centrMax, Double_t etaWindow = -1)
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
Double_tGetError(Int_t a, Int_t p2)
TH2D*GetHistNn(Int_t iAnalysisType) const
TH2D*GetHistNnn(Int_t iAnalysisType) const
TH2D*GetHistNnp(Int_t iAnalysisType) const
TH2D*GetHistNp(Int_t iAnalysisType) const
TH2D*GetHistNpn(Int_t iAnalysisType) const
TH2D*GetHistNpp(Int_t iAnalysisType) const
virtual const char*TObject::GetIconName() const
virtual const char*TObject::GetName() const
Double_tGetNn(Int_t analysisType) const
Double_tGetNnn(Int_t analysisType, Int_t p2) const
Double_tGetNnp(Int_t analysisType, Int_t p2) const
Double_tGetNp(Int_t analysisType) const
Double_tGetNpn(Int_t analysisType, Int_t p2) const
Double_tGetNpp(Int_t analysisType, Int_t p2) const
Int_tGetNumberOfAnalyzedEvent() const
Int_tGetNumberOfBins(Int_t ibin) const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
Double_tGetP1Start(Int_t ibin) const
Double_tGetP1Stop(Int_t ibin) const
Double_tGetP2Start(Int_t ibin) const
Double_tGetP2Stop(Int_t ibin) const
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
voidInitHistograms()
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTObject::Print(Option_t* option = "") const
voidPrintAnalysisSettings()
voidPrintResults(Int_t iAnalysisType, TH1D* gHist)
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidSetAnalysisLevel(const char* analysisLevel)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidSetCentralityIdentifier(const char* centralityId)
voidSetCentralityInterval(Double_t cStart, Double_t cStop)
voidSetConversionCut(Bool_t ConversionCut)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidSetHBTcut(Bool_t HBTcut)
voidSetHistNn(Int_t iAnalysisType, TH2D* gHist)
voidSetHistNnn(Int_t iAnalysisType, TH2D* gHist)
voidSetHistNnp(Int_t iAnalysisType, TH2D* gHist)
voidSetHistNp(Int_t iAnalysisType, TH2D* gHist)
voidSetHistNpn(Int_t iAnalysisType, TH2D* gHist)
voidSetHistNpp(Int_t iAnalysisType, TH2D* gHist)
voidSetInterval(Int_t iAnalysisType, Double_t p1Start, Double_t p1Stop, Int_t ibins, Double_t p2Start, Double_t p2Stop)
voidSetNn(Int_t analysisType, Double_t NnSet)
voidSetNnn(Int_t analysisType, Int_t ibin, Double_t NnnSet)
voidSetNnp(Int_t analysisType, Int_t ibin, Double_t NnpSet)
voidSetNp(Int_t analysisType, Double_t NpSet)
voidSetNpn(Int_t analysisType, Int_t ibin, Double_t NpnSet)
voidSetNpp(Int_t analysisType, Int_t ibin, Double_t NppSet)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetShuffle(Bool_t shuffle)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector&)
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()
private:
Float_tGetDPhiStar(Float_t phi1, Float_t pt1, Float_t charge1, Float_t phi2, Float_t pt2, Float_t charge2, Float_t radius, Float_t bSign)
AliBalanceEventMixing&operator=(const AliBalanceEventMixing&)

Data Members

public:
enum EAnalysisType { kRapidity
kEta
kQlong
kQout
kQside
kQinv
kPhi
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
private:
TStringfAnalysisLevelESD, AOD or MC
Int_tfAnalyzedEventsnumber of events that have been analyzed
Double_tfB[7][1024]BF matrix
Double_tfCentStartlower boundary for centrality
Double_tfCentStopupper boundary for centrality
TStringfCentralityIdCentrality identifier to be used for the histo naming
Bool_tfConversionCutapply conversion cuts
Bool_tfHBTcutapply HBT like cuts
TH2D*fHistN[7]N-
TH2D*fHistNN[7]N--
TH2D*fHistNP[7]N-+
TH2D*fHistP[7]N+
TH2D*fHistPN[7]N+-
TH2D*fHistPP[7]N++
Double_tfNn[7]
Double_tfNnn[7][1024]N(--)
Double_tfNnp[7][1024]N(-+)
Double_tfNp[7]number of pos./neg. inside the analyzed interval
Double_tfNpn[7][1024]N(+-)
Double_tfNpp[7][1024]N(++)
Int_tfNumberOfBins[7]number of bins of the analyzed interval
Double_tfP1Start[7]lower boundaries for single particle histograms
Double_tfP1Stop[7]upper boundaries for single particle histograms
Double_tfP2Start[7]lower boundaries for pair histograms
Double_tfP2Step[7]bin size for pair histograms
Double_tfP2Stop[7]upper boundaries for pair histograms
Bool_tfShuffleshuffled balance function object
Double_tferror[7][1024]error of the BF

Class Charts

Inheritance Chart:
TObject
AliBalanceEventMixing

Function documentation

AliBalanceEventMixing()
 Default constructor
AliBalanceEventMixing(const AliBalanceEventMixing& balance)
copy constructor
~AliBalanceEventMixing()
 Destructor
void SetInterval(Int_t iAnalysisType, Double_t p1Start, Double_t p1Stop, Int_t ibins, Double_t p2Start, Double_t p2Stop)
 Sets the analyzed interval.
 Set the same Information for all analyses
void InitHistograms()
Initialize the histograms
void PrintAnalysisSettings()
prints the analysis settings
void CalculateBalance(Float_t fCentrality, vector<Double_t>** chargeVector, Int_t iMainTrack = -1, Float_t bSign = 0.)
 Calculates the balance function
 For the event mixing only for all combinations of the first track (main event) with all other tracks (mix event)
Double_t GetBalance(Int_t a, Int_t p2)
 Returns the value of the balance function in bin p2
Double_t GetError(Int_t a, Int_t p2)
 Returns the error on the BF value for bin p2
 The errors for fNn and fNp are neglected here (0.1 % of total error)
ferror[iAnalysisType][p2] = TMath::Sqrt(Double_t(fNpp[iAnalysisType][p2])/(Double_t(fNp[iAnalysisType])*Double_t(fNp[iAnalysisType]))
			      + Double_t(fNnn[iAnalysisType][p2])/(Double_t(fNn[iAnalysisType])*Double_t(fNn[iAnalysisType]))
			      + Double_t(fNpn[iAnalysisType][p2])/(Double_t(fNp[iAnalysisType])*Double_t(fNp[iAnalysisType]))
			      + Double_t(fNnp[iAnalysisType][p2])/(Double_t(fNp[iAnalysisType])*Double_t(fNp[iAnalysisType]))
			      //+ TMath::Power(fNpn[iAnalysisType][p2]-fNpp[iAnalysisType][p2],2)/TMath::Power(Double_t(fNp[iAnalysisType]),3)
			      //+ TMath::Power(fNnp[iAnalysisType][p2]-fNnn[iAnalysisType][p2],2)/TMath::Power(Double_t(fNn[iAnalysisType]),3)
) /fP2Step[iAnalysisType];
TGraphErrors * DrawBalance(Int_t fAnalysisType)
void PrintResults(Int_t iAnalysisType, TH1D* gHist)
Prints the calculated width of the BF and its error
TH1D * GetBalanceFunctionHistogram(Int_t iAnalysisType, Double_t centrMin, Double_t centrMax, Double_t etaWindow = -1)
Returns the BF histogram, extracted from the 6 TH2D objects
(private members) of the AliBalanceEventMixing class.

 Acceptance correction:
 - only for analysis type = kEta
 - only if etaWindow > 0 (default = -1.)
 - calculated as proposed by STAR

Float_t GetDPhiStar(Float_t phi1, Float_t pt1, Float_t charge1, Float_t phi2, Float_t pt2, Float_t charge2, Float_t radius, Float_t bSign)
 calculates dphistar

void SetCentralityIdentifier(const char* centralityId)
void SetAnalysisLevel(const char* analysisLevel)
void SetShuffle(Bool_t shuffle)
{fShuffle = shuffle;}
void SetHBTcut(Bool_t HBTcut)
{fHBTcut = HBTcut;}
void SetConversionCut(Bool_t ConversionCut)
{fConversionCut = ConversionCut;}
void SetCentralityInterval(Double_t cStart, Double_t cStop)
{ fCentStart = cStart; fCentStop = cStop;}
void SetNp(Int_t analysisType, Double_t NpSet)
{ fNp[analysisType] = NpSet; }
void SetNn(Int_t analysisType, Double_t NnSet)
{ fNn[analysisType] = NnSet; }
void SetNpp(Int_t analysisType, Int_t ibin, Double_t NppSet)
{ if(ibin > -1 && ibin < MAXIMUM_NUMBER_OF_STEPS) fNpp[analysisType][ibin] = NppSet; }
void SetNpn(Int_t analysisType, Int_t ibin, Double_t NpnSet)
{ if(ibin > -1 && ibin < MAXIMUM_NUMBER_OF_STEPS) fNpn[analysisType][ibin] = NpnSet; }
void SetNnp(Int_t analysisType, Int_t ibin, Double_t NnpSet)
{ if(ibin > -1 && ibin < MAXIMUM_NUMBER_OF_STEPS) fNnp[analysisType][ibin] = NnpSet; }
void SetNnn(Int_t analysisType, Int_t ibin, Double_t NnnSet)
{ if(ibin > -1 && ibin < MAXIMUM_NUMBER_OF_STEPS) fNnn[analysisType][ibin] = NnnSet; }
const char* GetAnalysisLevel()
{return fAnalysisLevel.Data();}
Int_t GetNumberOfAnalyzedEvent() const
{return fAnalyzedEvents;}
Int_t GetNumberOfBins(Int_t ibin) const
{return fNumberOfBins[ibin];}
Double_t GetP1Start(Int_t ibin) const
{return fP1Start[ibin];}
Double_t GetP1Stop(Int_t ibin) const
{return fP1Stop[ibin];}
Double_t GetP2Start(Int_t ibin) const
{return fP2Start[ibin];}
Double_t GetP2Stop(Int_t ibin) const
{return fP2Stop[ibin];}
Double_t GetNp(Int_t analysisType) const
{ return 1.0*fNp[analysisType]; }
Double_t GetNn(Int_t analysisType) const
{ return 1.0*fNn[analysisType]; }
Double_t GetNnn(Int_t analysisType, Int_t p2) const
Double_t GetNpp(Int_t analysisType, Int_t p2) const
Double_t GetNpn(Int_t analysisType, Int_t p2) const
Double_t GetNnp(Int_t analysisType, Int_t p2) const
TH2D * GetHistNp(Int_t iAnalysisType) const
{ return fHistP[iAnalysisType];}
TH2D * GetHistNn(Int_t iAnalysisType) const
{ return fHistN[iAnalysisType];}
TH2D * GetHistNpn(Int_t iAnalysisType) const
{ return fHistPN[iAnalysisType];}
TH2D * GetHistNnp(Int_t iAnalysisType) const
{ return fHistNP[iAnalysisType];}
TH2D * GetHistNpp(Int_t iAnalysisType) const
{ return fHistPP[iAnalysisType];}
TH2D * GetHistNnn(Int_t iAnalysisType) const
{ return fHistNN[iAnalysisType];}
void SetHistNp(Int_t iAnalysisType, TH2D* gHist)
void SetHistNn(Int_t iAnalysisType, TH2D* gHist)
void SetHistNpn(Int_t iAnalysisType, TH2D* gHist)
void SetHistNnp(Int_t iAnalysisType, TH2D* gHist)
void SetHistNpp(Int_t iAnalysisType, TH2D* gHist)
void SetHistNnn(Int_t iAnalysisType, TH2D* gHist)
AliBalanceEventMixing & operator=(const AliBalanceEventMixing& )
{return *this;}