-const Int_t numberOfCentralityBins = 11;
-TString centralityArray[numberOfCentralityBins] = {"0-10","10-20","20-30","30-40","40-50","50-60","60-70","70-80","0-1","1-2","0-100"};
+const Int_t numberOfCentralityBins = 12;
+TString centralityArray[numberOfCentralityBins] = {"0-10","10-20","20-30","30-40","40-50","50-60","60-70","70-80","0-100","0-1","1-2","2-3"};
+
const Int_t gRebin = 1;
void drawBalanceFunction2DPsi(const char* filename = "AnalysisResultsPsi.root",
Bool_t kShowShuffled = kFALSE,
Bool_t kShowMixed = kTRUE,
Double_t psiMin = -0.5, Double_t psiMax = 0.5,
+ Double_t vertexZMin = -10.,
+ Double_t vertexZMax = 10.,
Double_t ptTriggerMin = -1.,
Double_t ptTriggerMax = -1.,
Double_t ptAssociatedMin = -1.,
return;
}
else
- draw(listBF,listBFShuffled,listBFMixed,gCentrality,psiMin,psiMax,
+ draw(listBF,listBFShuffled,listBFMixed,gCentrality,gCentralityEstimator,
+ psiMin,psiMax,vertexZMin,vertexZMax,
ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax,
k2pMethod,eventClass);
}
listBF = dynamic_cast<TList *>(dir->Get(listBFName.Data()));
cout<<"======================================================="<<endl;
- cout<<"List name (check): "<<listBFName.Data()<<endl;
cout<<"List name: "<<listBF->GetName()<<endl;
//listBF->ls();
//Get the histograms
TString histoName;
if(kData == 0)
- histoName = "fHistPV0M";
+ histoName = "fHistP";
else if(kData == 1)
- histoName = "fHistP_shuffleV0M";
+ histoName = "fHistP_shuffle";
else if(kData == 2)
- histoName = "fHistPV0M";
+ histoName = "fHistP";
+ if(gCentralityEstimator) histoName += gCentralityEstimator;
AliTHn *fHistP = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
if(!fHistP) {
Printf("fHistP %s not found!!!",histoName.Data());
fHistP->FillParent(); fHistP->DeleteContainers();
if(kData == 0)
- histoName = "fHistNV0M";
+ histoName = "fHistN";
if(kData == 1)
- histoName = "fHistN_shuffleV0M";
+ histoName = "fHistN_shuffle";
if(kData == 2)
- histoName = "fHistNV0M";
+ histoName = "fHistN";
+ if(gCentralityEstimator) histoName += gCentralityEstimator;
AliTHn *fHistN = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
if(!fHistN) {
Printf("fHistN %s not found!!!",histoName.Data());
fHistN->FillParent(); fHistN->DeleteContainers();
if(kData == 0)
- histoName = "fHistPNV0M";
+ histoName = "fHistPN";
if(kData == 1)
- histoName = "fHistPN_shuffleV0M";
+ histoName = "fHistPN_shuffle";
if(kData == 2)
- histoName = "fHistPNV0M";
+ histoName = "fHistPN";
+ if(gCentralityEstimator) histoName += gCentralityEstimator;
AliTHn *fHistPN = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
if(!fHistPN) {
Printf("fHistPN %s not found!!!",histoName.Data());
fHistPN->FillParent(); fHistPN->DeleteContainers();
if(kData == 0)
- histoName = "fHistNPV0M";
+ histoName = "fHistNP";
if(kData == 1)
- histoName = "fHistNP_shuffleV0M";
+ histoName = "fHistNP_shuffle";
if(kData == 2)
- histoName = "fHistNPV0M";
+ histoName = "fHistNP";
+ if(gCentralityEstimator) histoName += gCentralityEstimator;
AliTHn *fHistNP = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
if(!fHistNP) {
Printf("fHistNP %s not found!!!",histoName.Data());
fHistNP->FillParent(); fHistNP->DeleteContainers();
if(kData == 0)
- histoName = "fHistPPV0M";
+ histoName = "fHistPP";
if(kData == 1)
- histoName = "fHistPP_shuffleV0M";
+ histoName = "fHistPP_shuffle";
if(kData == 2)
- histoName = "fHistPPV0M";
+ histoName = "fHistPP";
+ if(gCentralityEstimator) histoName += gCentralityEstimator;
AliTHn *fHistPP = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
if(!fHistPP) {
Printf("fHistPP %s not found!!!",histoName.Data());
fHistPP->FillParent(); fHistPP->DeleteContainers();
if(kData == 0)
- histoName = "fHistNNV0M";
+ histoName = "fHistNN";
if(kData == 1)
- histoName = "fHistNN_shuffleV0M";
+ histoName = "fHistNN_shuffle";
if(kData == 2)
- histoName = "fHistNNV0M";
+ histoName = "fHistNN";
+ if(gCentralityEstimator) histoName += gCentralityEstimator;
AliTHn *fHistNN = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
if(!fHistNN) {
Printf("fHistNN %s not found!!!",histoName.Data());
//______________________________________________________//
void draw(TList *listBF, TList *listBFShuffled, TList *listBFMixed,
- Int_t gCentrality, Double_t psiMin, Double_t psiMax,
+ Int_t gCentrality, const char* gCentralityEstimator,
+ Double_t psiMin, Double_t psiMax,
+ Double_t vertexZMin,
+ Double_t vertexZMax,
Double_t ptTriggerMin, Double_t ptTriggerMax,
Double_t ptAssociatedMin, Double_t ptAssociatedMax,
Bool_t k2pMethod = kFALSE, TString eventClass) {
AliTHn *hNN = NULL;
//listBF->ls();
//Printf("=================");
- hP = (AliTHn*) listBF->FindObject("fHistPV0M");
+ TString histoName = "fHistP";
+ if(gCentralityEstimator) histoName += gCentralityEstimator;
+ hP = (AliTHn*) listBF->FindObject(histoName.Data());
hP->SetName("gHistP");
- hN = (AliTHn*) listBF->FindObject("fHistNV0M");
+ histoName = "fHistN";
+ if(gCentralityEstimator) histoName += gCentralityEstimator;
+ hN = (AliTHn*) listBF->FindObject(histoName.Data());
hN->SetName("gHistN");
- hPN = (AliTHn*) listBF->FindObject("fHistPNV0M");
+ histoName = "fHistPN";
+ if(gCentralityEstimator) histoName += gCentralityEstimator;
+ hPN = (AliTHn*) listBF->FindObject(histoName.Data());
hPN->SetName("gHistPN");
- hNP = (AliTHn*) listBF->FindObject("fHistNPV0M");
+ histoName = "fHistNP";
+ if(gCentralityEstimator) histoName += gCentralityEstimator;
+ hNP = (AliTHn*) listBF->FindObject(histoName.Data());
hNP->SetName("gHistNP");
- hPP = (AliTHn*) listBF->FindObject("fHistPPV0M");
+ histoName = "fHistPP";
+ if(gCentralityEstimator) histoName += gCentralityEstimator;
+ hPP = (AliTHn*) listBF->FindObject(histoName.Data());
hPP->SetName("gHistPP");
- hNN = (AliTHn*) listBF->FindObject("fHistNNV0M");
+ histoName = "fHistNN";
+ if(gCentralityEstimator) histoName += gCentralityEstimator;
+ hNN = (AliTHn*) listBF->FindObject(histoName.Data());
hNN->SetName("gHistNN");
AliBalancePsi *b = new AliBalancePsi();
AliTHn *hNNShuffled = NULL;
if(listBFShuffled) {
//listBFShuffled->ls();
-
- hPShuffled = (AliTHn*) listBFShuffled->FindObject("fHistP_shuffleV0M");
+ histoName = "fHistP_shuffle";
+ if(gCentralityEstimator) histoName += gCentralityEstimator;
+ hPShuffled = (AliTHn*) listBFShuffled->FindObject(histoName.Data());
hPShuffled->SetName("gHistPShuffled");
- hNShuffled = (AliTHn*) listBFShuffled->FindObject("fHistN_shuffleV0M");
+ histoName = "fHistN_shuffle";
+ if(gCentralityEstimator) histoName += gCentralityEstimator;
+ hNShuffled = (AliTHn*) listBFShuffled->FindObject(histoName.Data());
hNShuffled->SetName("gHistNShuffled");
- hPNShuffled = (AliTHn*) listBFShuffled->FindObject("fHistPN_shuffleV0M");
+ histoName = "fHistPN_shuffle";
+ if(gCentralityEstimator) histoName += gCentralityEstimator;
+ hPNShuffled = (AliTHn*) listBFShuffled->FindObject(histoName.Data());
hPNShuffled->SetName("gHistPNShuffled");
- hNPShuffled = (AliTHn*) listBFShuffled->FindObject("fHistNP_shuffleV0M");
+ histoName = "fHistNP_shuffle";
+ if(gCentralityEstimator) histoName += gCentralityEstimator;
+ hNPShuffled = (AliTHn*) listBFShuffled->FindObject(histoName.Data());
hNPShuffled->SetName("gHistNPShuffled");
- hPPShuffled = (AliTHn*) listBFShuffled->FindObject("fHistPP_shuffleV0M");
+ histoName = "fHistPP_shuffle";
+ if(gCentralityEstimator) histoName += gCentralityEstimator;
+ hPPShuffled = (AliTHn*) listBFShuffled->FindObject(histoName.Data());
hPPShuffled->SetName("gHistPPShuffled");
- hNNShuffled = (AliTHn*) listBFShuffled->FindObject("fHistNN_shuffleV0M");
+ histoName = "fHistNN_shuffle";
+ if(gCentralityEstimator) histoName += gCentralityEstimator;
+ hNNShuffled = (AliTHn*) listBFShuffled->FindObject(histoName.Data());
hNNShuffled->SetName("gHistNNShuffled");
AliBalancePsi *bShuffled = new AliBalancePsi();
if(listBFMixed) {
//listBFMixed->ls();
-
- hPMixed = (AliTHn*) listBFMixed->FindObject("fHistPV0M");
+ histoName = "fHistP";
+ if(gCentralityEstimator) histoName += gCentralityEstimator;
+ hPMixed = (AliTHn*) listBFMixed->FindObject(histoName.Data());
hPMixed->SetName("gHistPMixed");
- hNMixed = (AliTHn*) listBFMixed->FindObject("fHistNV0M");
+ histoName = "fHistN";
+ if(gCentralityEstimator) histoName += gCentralityEstimator;
+ hNMixed = (AliTHn*) listBFMixed->FindObject(histoName.Data());
hNMixed->SetName("gHistNMixed");
- hPNMixed = (AliTHn*) listBFMixed->FindObject("fHistPNV0M");
+ histoName = "fHistPN";
+ if(gCentralityEstimator) histoName += gCentralityEstimator;
+ hPNMixed = (AliTHn*) listBFMixed->FindObject(histoName.Data());
hPNMixed->SetName("gHistPNMixed");
- hNPMixed = (AliTHn*) listBFMixed->FindObject("fHistNPV0M");
+ histoName = "fHistNP";
+ if(gCentralityEstimator) histoName += gCentralityEstimator;
+ hNPMixed = (AliTHn*) listBFMixed->FindObject(histoName.Data());
+ histoName = "fHistNP";
+ if(gCentralityEstimator) histoName += gCentralityEstimator;
hNPMixed->SetName("gHistNPMixed");
- hPPMixed = (AliTHn*) listBFMixed->FindObject("fHistPPV0M");
+ histoName = "fHistPP";
+ if(gCentralityEstimator) histoName += gCentralityEstimator;
+ hPPMixed = (AliTHn*) listBFMixed->FindObject(histoName.Data());
hPPMixed->SetName("gHistPPMixed");
- hNNMixed = (AliTHn*) listBFMixed->FindObject("fHistNNV0M");
+ histoName = "fHistNN";
+ if(gCentralityEstimator) histoName += gCentralityEstimator;
+ hNNMixed = (AliTHn*) listBFMixed->FindObject(histoName.Data());
hNNMixed->SetName("gHistNNMixed");
AliBalancePsi *bMixed = new AliBalancePsi();
if(k2pMethod)
if(bMixed)
- gHistBalanceFunction = b->GetBalanceFunctionDeltaEtaDeltaPhi2pMethod(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax,bMixed);
+ gHistBalanceFunction = b->GetBalanceFunctionDeltaEtaDeltaPhi2pMethod(psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax,bMixed);
else{
cerr<<"NO MIXED BF BUT REQUESTED CORRECTING WITH IT! --> FAIL"<<endl;
return;
}
else
- gHistBalanceFunction = b->GetBalanceFunctionDeltaEtaDeltaPhi(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
+ gHistBalanceFunction = b->GetBalanceFunctionDeltaEtaDeltaPhi(psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
gHistBalanceFunction->SetTitle(histoTitle.Data());
gHistBalanceFunction->GetYaxis()->SetTitleOffset(1.3);
gHistBalanceFunction->SetName("gHistBalanceFunction");
if(k2pMethod)
if(bMixed)
- gHistBalanceFunctionShuffled = bShuffled->GetBalanceFunctionDeltaEtaDeltaPhi2pMethod(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax,bMixed);
+ gHistBalanceFunctionShuffled = bShuffled->GetBalanceFunctionDeltaEtaDeltaPhi2pMethod(psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax,bMixed);
else{
cerr<<"NO MIXED BF BUT REQUESTED CORRECTING WITH IT! --> FAIL"<<endl;
return;
}
else
- gHistBalanceFunctionShuffled = bShuffled->GetBalanceFunctionDeltaEtaDeltaPhi(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
+ gHistBalanceFunctionShuffled = bShuffled->GetBalanceFunctionDeltaEtaDeltaPhi(psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
gHistBalanceFunctionShuffled->SetTitle(histoTitle.Data());
gHistBalanceFunctionShuffled->GetYaxis()->SetTitleOffset(1.3);
gHistBalanceFunctionShuffled->SetName("gHistBalanceFunctionShuffled");
if(listBFMixed) {
if(k2pMethod)
if(bMixed)
- gHistBalanceFunctionMixed = bMixed->GetBalanceFunctionDeltaEtaDeltaPhi2pMethod(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax,bMixed);
+ gHistBalanceFunctionMixed = bMixed->GetBalanceFunctionDeltaEtaDeltaPhi2pMethod(psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax,bMixed);
else{
cerr<<"NO MIXED BF BUT REQUESTED CORRECTING WITH IT! --> FAIL"<<endl;
return;
}
else
- gHistBalanceFunctionMixed = bMixed->GetBalanceFunctionDeltaEtaDeltaPhi(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
+ gHistBalanceFunctionMixed = bMixed->GetBalanceFunctionDeltaEtaDeltaPhi(psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
gHistBalanceFunctionMixed->SetTitle(histoTitle.Data());
gHistBalanceFunctionMixed->GetYaxis()->SetTitleOffset(1.3);
gHistBalanceFunctionMixed->SetName("gHistBalanceFunctionMixed");
TH2D *gHist,
Bool_t k2pMethod = kFALSE,
TString eventClass="EventPlane") {
-
+ //balancing charges: [1]*TMath::Exp(-0.5*TMath::Power(((x - [3])/[2]),2)-0.5*TMath::Power(((y - [5])/[4]),2))
+ //short range correlations: [6]*TMath::Exp(-0.5*TMath::Power(((x - [8])/[7]),2)-0.5*TMath::Power(((y - [10])/[9]),2))
cout<<"FITTING FUNCTION"<<endl;
- //near side peak: [1]*TMath::Exp(-TMath::Power((0.5*TMath::Power((x/[2]),2)+0.5*TMath::Power((y/[3]),2)),[4]))
- //away side ridge: [5]*TMath::Exp(-TMath::Power((0.5*TMath::Power(((y-TMath::Pi())/[6]),2)),[7]))
- //longitudinal ridge: [8]*TMath::Exp(-TMath::Power((0.5*TMath::Power((x/[9]),2)),[10]))
- //wing structures: [11]*TMath::Power(x,2)
- //flow contribution (v1 up to v4): 2.*([12]*TMath::Cos(y) + [13]*TMath::Cos(2.*y) + [14]*TMath::Cos(3.*y) + [15]*TMath::Cos(4.*y))
- TF2 *gFitFunction = new TF2("gFitFunction","[0]+[1]*TMath::Exp(-TMath::Power((0.5*TMath::Power((x/[2]),2)+0.5*TMath::Power((y/[3]),2)),[4]))+[5]*TMath::Exp(-TMath::Power((0.5*TMath::Power(((y-TMath::Pi())/[6]),2)),[7]))+[8]*TMath::Exp(-TMath::Power((0.5*TMath::Power(((x+[17])/[9]),2)),[10]))+[8]*TMath::Exp(-TMath::Power((0.5*TMath::Power(((x-[17])/[9]),2)),[10]))+[11]*TMath::Power(x,2)+2.*[12]*([13]*TMath::Cos(y) + [14]*TMath::Cos(2.*y) + [15]*TMath::Cos(3.*y) + [16]*TMath::Cos(4.*y))",-2.0,2.0,-TMath::Pi()/2.,3.*TMath::Pi()/2.);
+ TF2 *gFitFunction = new TF2("gFitFunction","[0] + [1]*TMath::Exp(-0.5*TMath::Power(((x - [3])/[2]),2)-0.5*TMath::Power(((y - [5])/[4]),2)) + [6]*TMath::Exp(-0.5*TMath::Power(((x - [8])/[7]),2)-0.5*TMath::Power(((y - [10])/[9]),2))",-1.2,1.2,-TMath::Pi()/2.,3.*TMath::Pi()/2.);
gFitFunction->SetName("gFitFunction");
-
//Normalization
gFitFunction->SetParName(0,"N1");
- //near side peak
- gFitFunction->SetParName(1,"N_{near side}");gFitFunction->FixParameter(1,0.0);
- gFitFunction->SetParName(2,"Sigma_{near side}(delta eta)"); gFitFunction->FixParameter(2,0.0);
- gFitFunction->SetParName(3,"Sigma_{near side}(delta phi)"); gFitFunction->FixParameter(3,0.0);
- gFitFunction->SetParName(4,"Exponent_{near side}"); gFitFunction->FixParameter(4,1.0);
- //away side ridge
- gFitFunction->SetParName(5,"N_{away side}"); gFitFunction->FixParameter(5,0.0);
- gFitFunction->SetParName(6,"Sigma_{away side}(delta phi)"); gFitFunction->FixParameter(6,0.0);
- gFitFunction->SetParName(7,"Exponent_{away side}"); gFitFunction->FixParameter(7,1.0);
- //longitudinal ridge
- gFitFunction->SetParName(8,"N_{long. ridge}"); gFitFunction->SetParameter(8,0.05);//
- gFitFunction->FixParameter(8,0.0);
- gFitFunction->SetParName(9,"Sigma_{long. ridge}(delta eta)"); gFitFunction->FixParameter(9,0.0);
- gFitFunction->SetParName(10,"Exponent_{long. ridge}"); gFitFunction->FixParameter(10,1.0);
- //wing structures
- gFitFunction->SetParName(11,"N_{wing}"); gFitFunction->FixParameter(11,0.0);
- //flow contribution
- gFitFunction->SetParName(12,"N_{flow}"); gFitFunction->FixParameter(12,0.0);
- gFitFunction->SetParName(13,"V1"); gFitFunction->FixParameter(13,0.0);
- gFitFunction->SetParName(14,"V2"); gFitFunction->FixParameter(14,0.0);
- gFitFunction->SetParName(15,"V3"); gFitFunction->FixParameter(15,0.0);
- gFitFunction->SetParName(16,"V4"); gFitFunction->FixParameter(16,0.0);
- gFitFunction->SetParName(17,"Offset"); gFitFunction->FixParameter(17,0.0);
-
- // just release the near side peak
- gFitFunction->ReleaseParameter(0);gFitFunction->SetParameter(0,1.0);
- gFitFunction->ReleaseParameter(1);gFitFunction->SetParameter(1,0.3);gFitFunction->SetParLimits(1,0.0,100);
- gFitFunction->ReleaseParameter(2);gFitFunction->SetParameter(2,0.3);gFitFunction->SetParLimits(2,0.05,0.7);
- gFitFunction->ReleaseParameter(3);gFitFunction->SetParameter(3,0.3);gFitFunction->SetParLimits(3,0.05,1.7);
-
- gHist->Fit("gFitFunction","nm");
+ gFitFunction->SetParameter(0,1.0);
+
+ //2D balance function
+ gFitFunction->SetParName(1,"N_{BF}");
+ gFitFunction->SetParameter(1,1.0);
+ gFitFunction->SetParLimits(1, 0., 100.);
+ gFitFunction->SetParName(2,"Sigma_{BF}(delta eta)");
+ gFitFunction->SetParameter(2,0.6);
+ gFitFunction->SetParLimits(2, 0., 1.);
+ gFitFunction->SetParName(3,"Mean_{BF}(delta eta)");
+ gFitFunction->SetParameter(3,0.0);
+ gFitFunction->SetParLimits(3, -0.2, 0.2);
+ gFitFunction->SetParName(4,"Sigma_{BF}(delta phi)");
+ gFitFunction->SetParameter(4,0.6);
+ gFitFunction->SetParLimits(4, 0., 1.);
+ gFitFunction->SetParName(5,"Mean_{BF}(delta phi)");
+ gFitFunction->SetParameter(5,0.0);
+ gFitFunction->SetParLimits(5, -0.2, 0.2);
+
+ //short range structure
+ gFitFunction->SetParName(6,"N_{SR}");
+ gFitFunction->SetParameter(6,5.0);
+ gFitFunction->SetParLimits(6, 0., 100.);
+ gFitFunction->SetParName(7,"Sigma_{SR}(delta eta)");
+ gFitFunction->SetParameter(7,0.01);
+ gFitFunction->SetParLimits(7, 0.0, 0.1);
+ gFitFunction->SetParName(8,"Mean_{SR}(delta eta)");
+ gFitFunction->SetParameter(8,0.0);
+ gFitFunction->SetParLimits(8, -0.01, 0.01);
+ gFitFunction->SetParName(9,"Sigma_{SR}(delta phi)");
+ gFitFunction->SetParameter(9,0.01);
+ gFitFunction->SetParLimits(9, 0.0, 0.1);
+ gFitFunction->SetParName(10,"Mean_{SR}(delta phi)");
+ gFitFunction->SetParameter(10,0.0);
+ gFitFunction->SetParLimits(10, -0.01, 0.01);
//Cloning the histogram
- TString histoName = gHist->GetName(); histoName += "Fit";
- TH2D *gHistFit = new TH2D(histoName.Data(),";#Delta#eta;#Delta#varphi (rad);C(#Delta#eta,#Delta#varphi)",gHist->GetNbinsX(),gHist->GetXaxis()->GetXmin(),gHist->GetXaxis()->GetXmax(),gHist->GetNbinsY(),gHist->GetYaxis()->GetXmin(),gHist->GetYaxis()->GetXmax());
TH2D *gHistResidual = dynamic_cast<TH2D *>(gHist->Clone());
gHistResidual->SetName("gHistResidual");
gHistResidual->Sumw2();
- for(Int_t iBinDeltaEta = 1; iBinDeltaEta <= gHist->GetNbinsX(); iBinDeltaEta++) {
- for(Int_t iBinDeltaPhi = 1; iBinDeltaPhi <= gHist->GetNbinsY(); iBinDeltaPhi++) {
- gHistFit->SetBinContent(iBinDeltaEta,iBinDeltaPhi,gFitFunction->Eval(gHist->GetXaxis()->GetBinCenter(iBinDeltaEta),gHist->GetYaxis()->GetBinCenter(iBinDeltaPhi)));
- }
+ //Fitting the 2D bf
+ for(Int_t iAttempt = 0; iAttempt < 10; iAttempt++) {
+ gHist->Fit("gFitFunction","nm");
+ for(Int_t iParam = 0; iParam < 11; iParam++)
+ gFitFunction->SetParameter(iParam,gFitFunction->GetParameter(iParam));
}
- gHistResidual->Add(gHistFit,-1);
+ cout<<"======================================================"<<endl;
+ cout<<"Fit chi2/ndf: "<<gFitFunction->GetChisquare()/gFitFunction->GetNDF()<<" - chi2: "<<gFitFunction->GetChisquare()<<" - ndf: "<<gFitFunction->GetNDF()<<endl;
+ cout<<"======================================================"<<endl;
+
+ //Getting the residual
+ gHistResidual->Add(gFitFunction,-1);
//Write to output file
TString newFileName = "balanceFunctionFit2D.";
newFileName += ".root";
TFile *newFile = TFile::Open(newFileName.Data(),"recreate");
gHist->Write();
- gHistFit->Write();
gHistResidual->Write();
gFitFunction->Write();
newFile->Close();
-
-
}
-
-
//____________________________________________________________//
void drawBFPsi2D(const char* lhcPeriod = "LHC11h",
const char* gCentralityEstimator = "V0M",
gHistBalanceFunction->GetYaxis()->SetTitleOffset(1.3);
gHistBalanceFunction->GetZaxis()->SetTitleOffset(1.3);
gHistBalanceFunction->GetXaxis()->SetTitle("#Delta #eta");
- gHistBalanceFunction->GetYaxis()->SetTitle("#Delta #varphi (deg.)");
+ gHistBalanceFunction->GetYaxis()->SetTitle("#Delta #varphi (rad)");
gHistBalanceFunction->GetZaxis()->SetTitle("B(#Delta #eta, #Delta #varphi)");
//Shuffled balance function
gHistBalanceFunctionShuffled->GetYaxis()->SetTitleOffset(1.3);
gHistBalanceFunctionShuffled->GetZaxis()->SetTitleOffset(1.3);
gHistBalanceFunctionShuffled->GetXaxis()->SetTitle("#Delta #eta");
- gHistBalanceFunctionShuffled->GetYaxis()->SetTitle("#Delta #varphi (deg.)");
+ gHistBalanceFunctionShuffled->GetYaxis()->SetTitle("#Delta #varphi (rad)");
gHistBalanceFunctionShuffled->GetZaxis()->SetTitle("B(#Delta #eta, #Delta #varphi)");
}
gHistBalanceFunctionMixed->GetYaxis()->SetTitleOffset(1.3);
gHistBalanceFunctionMixed->GetZaxis()->SetTitleOffset(1.3);
gHistBalanceFunctionMixed->GetXaxis()->SetTitle("#Delta #eta");
- gHistBalanceFunctionMixed->GetYaxis()->SetTitle("#Delta #varphi (deg.)");
+ gHistBalanceFunctionMixed->GetYaxis()->SetTitle("#Delta #varphi (rad)");
gHistBalanceFunctionMixed->GetZaxis()->SetTitle("B(#Delta #eta, #Delta #varphi)");
}
gHistBalanceFunctionSubtracted->GetYaxis()->SetTitleOffset(1.3);
gHistBalanceFunctionSubtracted->GetZaxis()->SetTitleOffset(1.3);
gHistBalanceFunctionSubtracted->GetXaxis()->SetTitle("#Delta #eta");
- gHistBalanceFunctionSubtracted->GetYaxis()->SetTitle("#Delta #varphi (deg.)");
+ gHistBalanceFunctionSubtracted->GetYaxis()->SetTitle("#Delta #varphi (rad)");
gHistBalanceFunctionSubtracted->GetZaxis()->SetTitle("B(#Delta #eta, #Delta #varphi)");
}
gHistBalanceFunction->SetTitle("");
gHistBalanceFunction->GetYaxis()->SetTitleOffset(1.4);
gHistBalanceFunction->GetYaxis()->SetNdivisions(10);
+ gHistBalanceFunction->GetXaxis()->SetRangeUser(-1.4,1.4);
gHistBalanceFunction->GetXaxis()->SetNdivisions(10);
+ gHistBalanceFunction->GetYaxis()->SetTitle("#Delta #varphi (rad)");
gHistBalanceFunction->DrawCopy("lego2");
gPad->SetTheta(30); // default is 30
gPad->SetPhi(-60); // default is 30