#include "AliMultiplicity.h"
#include "AliESDVertex.h"
#include "AliFMDAnaParameters.h"
+
//#include "AliFMDGeometry.h"
if(!physics && !empty)
return;
+ const AliMultiplicity* spdMult = esd->GetMultiplicity();
+ if(physics)
+ fClusters+= (spdMult->GetNumberOfSingleClusters() + spdMult->GetNumberOfTracklets());
+
+ if(empty)
+ fClustersEmpty+= (spdMult->GetNumberOfSingleClusters() + spdMult->GetNumberOfTracklets());
+
+ if(empty)
+ std::cout<<spdMult->GetNumberOfSingleClusters()<<" "<<spdMult->GetNumberOfTracklets()<<std::endl;
+
TH1F* Edist = 0;
TH1F* emptyEdist = 0;
TH1F* ringEdist = 0;
void AliFMDAnalysisTaskCollector::Terminate(Option_t */*option*/) {
std::cout<<"Analysed "<<fEvents<<" events and "<<fEmptyEvents<<" empty"<<std::endl;
+ std::cout<<fClusters / fEvents << " clusters per physics event and "<<fClustersEmpty / fEmptyEvents<< " clusters per empty event"<<std::endl;
+
AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance();
TH1F* fZvtxDist;
Int_t fEvents;
Int_t fEmptyEvents;
+ Float_t fClusters;
+ Float_t fClustersEmpty;
+
ClassDef(AliFMDAnalysisTaskCollector, 0); // Analysis task for FMD analysis
};
#include "AliFMDStripIndex.h"
#include "AliESDInputHandler.h"
#include "AliGenDPMjetEventHeader.h"
+#include "AliLog.h"
ClassImp(AliFMDAnalysisTaskDndeta)
for(Int_t i =0; i<nVtxbins; i++) {
TH2F* hMultTotal = (TH2F*)fOutputList->FindObject(Form("dNdeta_FMD%d%c_vtxbin%d",det,ringChar,i));
- if(fVtxEff)
+ fOutputList->Add(hMultTotal->Clone(Form("%s_orig", hMultTotal->GetName())));
+ if(fVtxEff) {
+ AliInfo(Form("scaling %s with vertex efficiency %f",
+ hMultTotal->GetName(), fVtxEff));
hMultTotal->Scale(fVtxEff);
+ }
TH2F* hMultTotalNSD = (TH2F*)fOutputList->FindObject(Form("dNdetaNSD_FMD%d%c_vtxbin%d",det,ringChar,i));
- if(fVtxEffNSD)
+ fOutputList->Add(hMultTotalNSD->Clone(Form("%s_orig", hMultTotalNSD->GetName())));
+ if(fVtxEffNSD) {
+ AliInfo(Form("scaling %s with vertex efficiency %f",
+ hMultTotalNSD->GetName(), fVtxEffNSD));
hMultTotalNSD->Scale(fVtxEffNSD);
+ }
//TH2F* hMultTrVtx = (TH2F*)hMultTotal->Clone(Form("dNdeta_FMD%d%c_TrVtx_vtxbin%d",det,ringChar,i));
TH2F* hMultTrVtx = (TH2F*)fOutputList->FindObject(Form("dNdetaTrVtx_FMD%d%c_vtxbin%d",det,ringChar,i));
{
// Execute analysis for current event
//
-
AliESDEvent* fESD = (AliESDEvent*)InputEvent();
AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance();
// Centrality selection - work in progress
Float_t centrality = 1;
-
- if( centrality < fCentralityLow || centrality > fCentralityHigh )
- return;
+ if( centrality < fCentralityLow || centrality > fCentralityHigh ) return;
//End of centrality selection
fDensity.Exec("");
if(fDensity.GetEventStatus()) {
fBackground.Exec("");
- if(pars->GetRunDndeta())
- fDndeta.Exec("");
- if(pars->GetRunBFCorrelation())
- fBFCorrelation.Exec("");
+ if(pars->GetRunDndeta()) fDndeta.Exec("");
+ if(pars->GetRunBFCorrelation()) fBFCorrelation.Exec("");
}
else return;
}
fDndeta.SetVtxEfficiency(fSharing.GetVtxEfficiencyFromData());
else
fDndeta.SetVtxEfficiency(pars->GetVtxSelectionEffFromMC());
- std::cout<<fSharing.GetNSDVtxEfficiencyFromData()<<" "<<fSharing.GetVtxEfficiencyFromData()<<" "<<pars->GetVtxSelectionEffFromMC()<<std::endl;
+
+ AliInfo(Form("Vertex efficiencies: NSD_data=%f, INEL_data=%f, INEL_mc=%f",
+ fSharing.GetNSDVtxEfficiencyFromData(),
+ fSharing.GetVtxEfficiencyFromData(),
+ pars->GetVtxSelectionEffFromMC()));
if(fSharing.GetNSDVtxEfficiencyFromData() > 0)
fDndeta.SetVtxEfficiencyNSD(fSharing.GetNSDVtxEfficiencyFromData());
if (!fmd) return;
Int_t nHits[3][2] = {{0,0},{0,0},{0,0}};
-
+ //Int_t nDead = 0;
for(UShort_t det=1;det<=3;det++) {
Int_t nRings = (det==1 ? 1 : 2);
for (UShort_t ir = 0; ir < nRings; ir++) {
for(UShort_t strip = 0; strip < nstr; strip++) {
foutputESDFMD->SetMultiplicity(det,ring,sec,strip,0.);
Float_t mult = fmd->Multiplicity(det,ring,sec,strip);
+ //if(mult == AliESDFMD::kInvalidMult)
+ // nDead++;
+ // if(mult > 0)
+ // std::cout<<mult<<std::endl;
- if(mult == AliESDFMD::kInvalidMult || mult == 0) continue;
-
+ if(mult == AliESDFMD::kInvalidMult || mult == 0 || mult > 20) continue;
//Double_t eta = fmd->Eta(det,ring,sec,strip);
Float_t eta = pars->GetEtaFromStrip(det,ring,sec,strip,vertex[2]);
hEdist->Fill(mult);
+
+
if(fmd->IsAngleCorrected())
mult = mult/TMath::Cos(Eta2Theta(eta));
Float_t prevE = 0;
}
Float_t mergedEnergy = GetMultiplicityOfStrip(mult,eta,prevE,nextE,det,ring,sec,strip);
- //if(mult> (pars->GetMPV(det,ring,eta) - pars->GetSigma(det,ring,eta)))
- // mergedEnergy = mult;
- //else mergedEnergy = 0;
+
if(mergedEnergy > 0.3 )
nHits[det-1][ir]++;
foutputESDFMD->SetMultiplicity(det,ring,sec,strip,mergedEnergy);
}
}
}
+
+ //std::cout<<nDead<<std::endl;
+
//cluster cut
//if(testmult->GetNumberOfSingleClusters() > 15 + nTrackLets)
// {fStatus = kFALSE; std::cout<<"FMD : "<<nHits[0][0]<<" "<<nHits[1][0]<<" "<<nHits[1][1]<<" "<<nHits[2][0]<<" "<<nHits[2][1]<<" tracks "<<testmult->GetNumberOfSingleClusters()<<" "<<nTrackLets<<std::endl; return;}
-
+
TH2F* hCorrelationFMD23 = (TH2F*)fDiagList->FindObject("hCorrelationFMD23");
TH2F* hCorrelationFMD12 = (TH2F*)fDiagList->FindObject("hCorrelationFMD12");
TH2F* hCorrelationFMD2diff23 = (TH2F*)fDiagList->FindObject("hCorrelationFMD2diff23");
hCorrelationFMDGoodtracks->Fill(ngood,nTotalFMDhits);
hCorrelationFMDBadtracks->Fill(nbad,nTotalFMDhits);
hCorrelationGoodbadtracks->Fill(ngood,nbad);
-
+
if(fStandalone) {
PostData(0, foutputESDFMD);
PostData(1, fEsdVertex);
l->Draw();
multhistproj->DrawCopy("same");
TH1D* hSPDanavtxbin = 0;
+ if(what == kMult || what == kMultTrVtx || what == kMultNSD) {
+
if(what == kMult)
hSPDanavtxbin = (TH1D*)fList->FindObject(Form("dNdeta_SPD_vtxbin%d_proj",v));
if(what == kMultTrVtx)
if(what == kMultNSD)
hSPDanavtxbin = (TH1D*)fList->FindObject(Form("dNdetaNSD_SPD_vtxbin%d_proj",v));
+
hSPDanavtxbin->SetMarkerColor(kBlue);
hSPDanavtxbin->SetMarkerStyle(kStar);
hSPDanavtxbin->Scale(xb1 / xr1);
graph->Draw("sameP");
graph2->Draw("sameP");
}
+ }
}
else
multhistproj->DrawCopy("same");
-
+
}
}
}
//Legends for corrections
if(fDrawAll) {
- for(Int_t v=0; v< nVertexBins; v++) {
- TPad* pad= (TPad*)cCorrectionsPhi->cd(v+1);
- pad->BuildLegend(0.15,0.45,0.45,0.9);
- Double_t delta = 2*pars->GetVtxCutZ()/pars->GetNvtxBins();
- Float_t vtxZ1 = (delta*v) - pars->GetVtxCutZ();
- Float_t vtxZ2 = (delta*(v+1)) - pars->GetVtxCutZ();
- TLatex* l = new TLatex(0.14,0.92,Form("Vtx range [%.1f, %.1f]",vtxZ1,vtxZ2));
- l->SetNDC(kTRUE);
- l->Draw();
- }
+ for(Int_t v=0; v< nVertexBins; v++) {
+ TPad* pad= (TPad*)cCorrectionsPhi->cd(v+1);
+ pad->BuildLegend(0.15,0.45,0.45,0.9);
+ Double_t delta = 2*pars->GetVtxCutZ()/pars->GetNvtxBins();
+ Float_t vtxZ1 = (delta*v) - pars->GetVtxCutZ();
+ Float_t vtxZ2 = (delta*(v+1)) - pars->GetVtxCutZ();
+ TLatex* l = new TLatex(0.14,0.92,Form("Vtx range [%.1f, %.1f]",vtxZ1,vtxZ2));
+ l->SetNDC(kTRUE);
+ l->Draw();
+ }
}
for(Int_t v=0; v< nVertexBins; v++) {
TH1F* sumMultHist = (TH1F*)fMultList[what]->FindObject(Form("hMult_vtxbin%d_%s",v,fAnalysisNames[what].Data()));
}
}
-
+
// End of SPD
-
+
//TH1F* hPrim = (TH1F*)fList->FindObject(fPrimEvents.Data());
// TFile testhit("/home/canute/ALICE/Simulations/TestOfAnalysis2/hitsdist.root");
--- /dev/null
+void
+LoadLibs()
+{
+ gSystem->Load("libANALYSIS");
+ gSystem->Load("libANALYSISalice");
+ gSystem->Load("libPWG0base");
+ gSystem->Load("libPWG2forward");
+}
+