- TH2F* hMult = 0;
- TH2F* hMultTrVtx = 0;
- TH2F* hHits = 0;
- TH2F* hSPDMult = 0;
+ TH2F* hMult = 0;
+ TH2F* hMultTrVtx = 0;
+ TH2F* hMultNSD = 0;
+ TH2F* hHits = 0;
+ TH2F* hSPDMult = 0;
TH2F* hSPDMultTrVtx = 0;
+ TH2F* hSPDMultNSD = 0;
// TH2F* hHitsNoCuts = 0;
Int_t nVtxbins = pars->GetNvtxBins();
for(Int_t i = 0; i< nVtxbins; i++) {
nSec, 0, 2*TMath::Pi());
hMult->Sumw2();
fOutputList->Add(hMult);
- hMultTrVtx = new TH2F(Form("multTrVtx_FMD%d%c_vtxbin%d",det,ringChar,i),Form("mult_FMD%d%c_vtxbin%d",det,ringChar,i),
+ hMultTrVtx = new TH2F(Form("multTrVtx_FMD%d%c_vtxbin%d",det,ringChar,i),Form("multTrVtx_FMD%d%c_vtxbin%d",det,ringChar,i),
hBg->GetNbinsX(),
hBg->GetXaxis()->GetXmin(),
hBg->GetXaxis()->GetXmax(),
hMultTrVtx->Sumw2();
fOutputList->Add(hMultTrVtx);
+
+ hMultNSD = new TH2F(Form("multNSD_FMD%d%c_vtxbin%d",det,ringChar,i),Form("multNSD_FMD%d%c_vtxbin%d",det,ringChar,i),
+ hBg->GetNbinsX(),
+ hBg->GetXaxis()->GetXmin(),
+ hBg->GetXaxis()->GetXmax(),
+ nSec, 0, 2*TMath::Pi());
+ hMultNSD->Sumw2();
+
+ fOutputList->Add(hMultNSD);
+
hHits = new TH2F(Form("hits_FMD%d%c_vtxbin%d",det,ringChar,i),Form("hits_FMD%d%c_vtxbin%d",det,ringChar,i),
hBg->GetNbinsX(),
hBg->GetXaxis()->GetXmin(),
20, 0, 2*TMath::Pi());
hSPDMultTrVtx->Sumw2();
fOutputList->Add(hSPDMultTrVtx);
+ hSPDMultNSD = new TH2F(Form("multNSD_SPD_vtxbin%d",i),Form("multNSD_SPD_vtxbin%d",i),
+ hBg->GetNbinsX(),
+ hBg->GetXaxis()->GetXmin(),
+ hBg->GetXaxis()->GetXmax(),
+ 20, 0, 2*TMath::Pi());
+ hSPDMultNSD->Sumw2();
+ fOutputList->Add(hSPDMultNSD);
+
}
-
- TH2F* dNdetadphiHistogram = new TH2F("dNdetadphiHistogramTrVtx","dNdetadphiHistogramTrVtx;#eta;#Phi",pars->GetNetaBins(),-6,6,20,0,2*TMath::Pi());
- TH2F* dNdetadphiHistogramSPD = new TH2F("dNdetadphiHistogramSPDTrVtx","dNdetadphiHistogramSPDTrVtx;#eta;#Phi",pars->GetNetaBins(),-6,6,20,0,2*TMath::Pi());
+ TH2F* hBg = pars->GetBackgroundCorrection(1, 'I', 5);
+ TH2F* dNdetadphiHistogram = new TH2F("dNdetadphiHistogramTrVtx","dNdetadphiHistogramTrVtx;#eta;#Phi",pars->GetNetaBins(),hBg->GetXaxis()->GetXmin(),hBg->GetXaxis()->GetXmax(),20,0,2*TMath::Pi());
+ TH2F* dNdetadphiHistogramSPD = new TH2F("dNdetadphiHistogramSPDTrVtx","dNdetadphiHistogramSPDTrVtx;#eta;#Phi",pars->GetNetaBins(),hBg->GetXaxis()->GetXmin(),hBg->GetXaxis()->GetXmax(),20,0,2*TMath::Pi());
//dNdetadphiHistogram->SetErrorOption("g");
fHitList->Add(dNdetadphiHistogram);
hMult->Reset();
TH2F* hMultTrVtx = (TH2F*)fOutputList->FindObject(Form("multTrVtx_FMD%d%c_vtxbin%d",det,ringChar,vtxbin));
hMultTrVtx->Reset();
+ TH2F* hMultNSD = (TH2F*)fOutputList->FindObject(Form("multNSD_FMD%d%c_vtxbin%d",det,ringChar,vtxbin));
+ hMultNSD->Reset();
TH2F* hSPDMult = (TH2F*)fOutputList->FindObject(Form("mult_SPD_vtxbin%d",vtxbin));
hSPDMult->Reset();
TH2F* hSPDMultTrVtx = (TH2F*)fOutputList->FindObject(Form("multTrVtx_SPD_vtxbin%d",vtxbin));
hSPDMultTrVtx->Reset();
+ TH2F* hSPDMultNSD = (TH2F*)fOutputList->FindObject(Form("multNSD_SPD_vtxbin%d",vtxbin));
+ hSPDMultNSD->Reset();
}
}
-
-
+
+ Bool_t nsd = pars->IsEventTriggered(AliFMDAnaParameters::kNSD);
for(UShort_t det=1;det<=3;det++) {
Int_t nRings = (det==1 ? 1 : 2);
TH2F* hMult = (TH2F*)fOutputList->FindObject(Form("mult_FMD%d%c_vtxbin%d",det,ringChar,vtxbin));
TH2F* hMultTrVtx = (TH2F*)fOutputList->FindObject(Form("multTrVtx_FMD%d%c_vtxbin%d",det,ringChar,vtxbin));
+ TH2F* hMultNSD = (TH2F*)fOutputList->FindObject(Form("multNSD_FMD%d%c_vtxbin%d",det,ringChar,vtxbin));
TH2F* hMultInput = (TH2F*)fInputList->FindObject(Form("FMD%d%c_vtxbin%d",det,ringChar,vtxbin));
TH2F* hHits = (TH2F*)fHitList->FindObject(Form("hits_FMD%d%c_vtxbin%d",det,ringChar,vtxbin));
hHits->Add(hMultInput);
TH2F* hBg = pars->GetBackgroundCorrection(det, ringChar, vtxbin);
-
+ TH2F* hBgNSD = pars->GetBackgroundCorrectionNSD(det, ringChar, vtxbin);
hMult->Add(hMultInput);
hMultTrVtx->Add(hMultInput);
+
hMult->Divide(hBg);//,"B");
hMultTrVtx->Divide(hBg);//,"B");
-
+
+ if(nsd) {
+ hMultNSD->Add(hMultInput);
+ hMultNSD->Divide(hBgNSD);
+ }
+
//sharing efficiency correction ?
if(pars->SharingEffPresent()) {
- TH1F* hSharingEff = pars->GetSharingEfficiency(det,ringChar,vtxbin);
+ TH1F* hSharingEff = pars->GetSharingEfficiencyTrVtx(det,ringChar,vtxbin);
TH1F* hSharingEffTrVtx = pars->GetSharingEfficiencyTrVtx(det,ringChar,vtxbin);
- for(Int_t nx=1; nx<hMult->GetNbinsX(); nx++) {
- Float_t correction = hSharingEff->GetBinContent(nx);
+ for(Int_t nx=1; nx<=hMult->GetNbinsX(); nx++) {
+ Float_t correction = hSharingEff->GetBinContent(nx);
Float_t correctionTrVtx = hSharingEffTrVtx->GetBinContent(nx);
- for(Int_t ny=1; ny<hMult->GetNbinsY(); ny++) {
+ //FIXME : This should be for NSD events
+ Float_t correctionNSD = hSharingEff->GetBinContent(nx);
+
+ for(Int_t ny=1; ny<=hMult->GetNbinsY(); ny++) {
if(correction != 0){
hMult->SetBinContent(nx,ny,hMult->GetBinContent(nx,ny)/correction);
Float_t error = TMath::Sqrt(TMath::Power(hMultTrVtx->GetBinError(nx,ny),2) + TMath::Power(hMultTrVtx->GetBinContent(nx,ny)*hSharingEffTrVtx->GetBinError(nx),2)) / correctionTrVtx;
hMultTrVtx->SetBinError(nx,ny,error);
}
+ if(correctionNSD != 0 && nsd) {
+ hMultNSD->SetBinContent(nx,ny,hMultNSD->GetBinContent(nx,ny)/correctionNSD);
+ Float_t error = TMath::Sqrt(TMath::Power(hMultNSD->GetBinError(nx,ny),2) + TMath::Power(hMultNSD->GetBinContent(nx,ny)*hSharingEff->GetBinError(nx),2)) / correctionNSD;
+ hMultNSD->SetBinError(nx,ny,error);
+ }
+
+
}
}
}
- if(pars->GetEventSelectionEfficiency(vtxbin) > 0)
- hMult->Scale(1/pars->GetEventSelectionEfficiency(vtxbin));
- else
- hMult->Scale(0);
+
+ // if(pars->GetEventSelectionEfficiency(vtxbin) > 0)
+ // hMult->Scale(1/pars->GetEventSelectionEfficiency(vtxbin));
+ //else
+ // hMult->Scale(0);
+ hMult->Divide(pars->GetEventSelectionEfficiency("INEL",vtxbin,ringChar));
+ hMultNSD->Divide(pars->GetEventSelectionEfficiency("NSD",vtxbin,ringChar));
+
}
}
TH2F* hSPDMult = (TH2F*)fOutputList->FindObject(Form("mult_SPD_vtxbin%d",vtxbin));
TH2F* hSPDMultTrVtx = (TH2F*)fOutputList->FindObject(Form("multTrVtx_SPD_vtxbin%d",vtxbin));
+ TH2F* hSPDMultNSD = (TH2F*)fOutputList->FindObject(Form("multNSD_SPD_vtxbin%d",vtxbin));
+
+ AliESDInputHandler* eventHandler =
+ dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()
+ ->GetInputEventHandler());
+ if (!eventHandler) return;
+
+ AliESDEvent* esd = eventHandler->GetEvent();
- AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
- AliESDEvent* esd = esdH->GetEvent();
const AliMultiplicity* spdmult = esd->GetMultiplicity();
for(Int_t j = 0; j< spdmult->GetNumberOfTracklets();j++) {
hSPDMult->Fill(spdmult->GetEta(j),spdmult->GetPhi(j));
hSPDMultTrVtx->Fill(spdmult->GetEta(j),spdmult->GetPhi(j));
+ hSPDMultNSD->Fill(spdmult->GetEta(j),spdmult->GetPhi(j));
}
for(Int_t j = 0; j< spdmult->GetNumberOfSingleClusters();j++) {
hSPDMult->Fill(-TMath::Log(TMath::Tan(spdmult->GetThetaSingle(j)/2.)),spdmult->GetPhiSingle(j));
hSPDMultTrVtx->Fill(-TMath::Log(TMath::Tan(spdmult->GetThetaSingle(j)/2.)),spdmult->GetPhiSingle(j));
-
+ hSPDMultNSD->Fill(-TMath::Log(TMath::Tan(spdmult->GetThetaSingle(j)/2.)),spdmult->GetPhiSingle(j));
}
TH2F* hBgSPD = pars->GetBackgroundCorrection(0, 'Q', vtxbin);
if(hBgSPD) {
- TH1F* hDead = pars->GetSPDDeadCorrection(vtxbin);
- for(Int_t i=1; i<=hSPDMult->GetNbinsX(); i++) {
- for(Int_t j=1; j<=hSPDMult->GetNbinsY(); j++) {
- Float_t mult = hSPDMult->GetBinContent(i,j);
- Float_t correction = hBgSPD->GetBinContent(i,j);
- Float_t correctedMult = 0;
- Float_t correctedError = 0;
- if(correction > 0 && mult > 0) {
- correctedMult = mult/correction;
- if(hDead->GetBinContent(i) > 0)
- correctedMult = correctedMult/hDead->GetBinContent(i);
- correctedError = correctedMult*TMath::Sqrt( TMath::Power(hSPDMult->GetBinError(i,j)/hSPDMult->GetBinContent(i,j),2) +
- TMath::Power(hBgSPD->GetBinError(i,j)/hBgSPD->GetBinContent(i,j),2));
-
- }
+
+ hSPDMult->Divide(hBgSPD);
+ hSPDMultTrVtx->Divide(hBgSPD);
+ hSPDMultNSD->Divide(hBgSPD);
- if(correctedMult != 0) {
- hSPDMult->SetBinContent(i,j,correctedMult);
- hSPDMultTrVtx->SetBinContent(i,j,correctedMult);
- hSPDMult->SetBinError(i,j,correctedError);
- hSPDMultTrVtx->SetBinError(i,j,correctedError);
+ TH1F* hDead = pars->GetSPDDeadCorrection(vtxbin);
+ for(Int_t i=1; i<=hSPDMult->GetNbinsX(); i++) {
+ for(Int_t j=1; j<=hSPDMult->GetNbinsY(); j++) {
+ Float_t mult = hSPDMult->GetBinContent(i,j);
+ Float_t correction = hBgSPD->GetBinContent(i,j);
+ Float_t correctedMult = 0;
+ Float_t correctedError = 0;
+
+
+ if( mult > 0 && correction > 0.) {
+ correctedMult = mult;///correction;
+ //std::cout<<correction<<" "<<hSPDMult->GetXaxis()->GetBinCenter(i)<<std::endl;
+ // correctedMult = mult/correction;
+
+ if(hDead->GetBinContent(i) > 0)
+ correctedMult = correctedMult/hDead->GetBinContent(i);
+ correctedError = correctedMult*TMath::Sqrt( TMath::Power(hSPDMult->GetBinError(i,j)/hSPDMult->GetBinContent(i,j),2) +
+ TMath::Power(hBgSPD->GetBinError(i,j)/hBgSPD->GetBinContent(i,j),2));
+
+ }
+
+ if(correctedMult > 0) {
+ hSPDMult->SetBinContent(i,j,correctedMult);
+ hSPDMultTrVtx->SetBinContent(i,j,correctedMult);
+ hSPDMult->SetBinError(i,j,correctedError);
+ hSPDMultTrVtx->SetBinError(i,j,correctedError);
+ if(nsd) {
+ hSPDMultNSD->SetBinContent(i,j,correctedMult);
+ hSPDMultNSD->SetBinError(i,j,correctedError);
+ }
+
+ }
}
}
- }
-
- if(pars->GetEventSelectionEfficiency(vtxbin) > 0)
- hSPDMult->Scale(1/pars->GetEventSelectionEfficiency(vtxbin));
- else
- hSPDMult->Scale(0);
-
+ hSPDMult->Divide(pars->GetEventSelectionEfficiency("INEL",vtxbin,'I'));
+ hSPDMultNSD->Divide(pars->GetEventSelectionEfficiency("NSD",vtxbin,'I'));
}
else
AliWarning("No SPD background map found");