#include "AliFMDAnaCalibBackgroundCorrection.h"
#include <TH2F.h>
+#include <TH1F.h>
#include <TBrowser.h>
ClassImp(AliFMDAnaCalibBackgroundCorrection)
AliFMDAnaCalibBackgroundCorrection::AliFMDAnaCalibBackgroundCorrection() : TObject(),
fArray(),
fAxis(),
- fIsInit(kFALSE)
+ fIsInit(kFALSE),
+ fListOfDoubleHitCorrection()
{
//____________________________________________________________________
AliFMDAnaCalibBackgroundCorrection::AliFMDAnaCalibBackgroundCorrection(const AliFMDAnaCalibBackgroundCorrection& o)
- : TObject(o), fArray(o.fArray), fAxis(o.fAxis), fIsInit(o.fIsInit)
+ : TObject(o), fArray(o.fArray), fAxis(o.fAxis), fIsInit(o.fIsInit), fListOfDoubleHitCorrection()
{
// Copy ctor
}
}
//____________________________________________________________________
+TH1F* AliFMDAnaCalibBackgroundCorrection::GetDoubleHitCorrection(Int_t det,
+ Char_t ring) {
+
+
+ TH1F* hCorrection = (TH1F*)fListOfDoubleHitCorrection.FindObject(Form("hDoubleHitCorrection_FMD%d%c"));
+ return hCorrection;
+}
+
+//____________________________________________________________________
+void AliFMDAnaCalibBackgroundCorrection::SetDoubleHitCorrection(Int_t det,
+ Char_t ring,
+ TH1F* hCorrection) {
+ hCorrection->SetName(Form("hDoubleHitCorrection_FMD%d%c"));
+ fListOfDoubleHitCorrection.Add(hCorrection);
+}
+//____________________________________________________________________
void AliFMDAnaCalibBackgroundCorrection::SetRefAxis(TAxis* axis) {
for(Int_t ring = 0;ring<nRings;ring++) {
Int_t nSec = (ring == 1 ? 40 : 20);
Char_t ringChar = (ring == 0 ? 'I' : 'O');
+ TH1F* doubleHits = new TH1F(Form("DoubleHits_FMD%d%c",det,ringChar),
+ Form("DoubleHits_FMD%d%c",det,ringChar),fNbinsEta, -6,6);
+ TH1F* allHits = new TH1F(Form("allHits_FMD%d%c",det,ringChar),
+ Form("allHits_FMD%d%c",det,ringChar), fNbinsEta, -6,6);
+
+ doubleHits->Sumw2();
+ allHits->Sumw2();
+ fListOfHits.Add(allHits);
+ fListOfHits.Add(doubleHits);
+
for(Int_t v=0; v<fNvtxBins;v++) {
TH2F* hHits = new TH2F(Form("hHits_FMD%d%c_vtx%d", det,ringChar,v),
Form("hHits_FMD%d%c_vtx%d", det,ringChar,v),
}
}
}
- TH1F* doubleHits = new TH1F("DoubleHits", "DoubleHits",
- fNbinsEta, -6,6);
- TH1F* allHits = new TH1F("allHits", "allHits",
- fNbinsEta, -6,6);
+
fVertexBins.SetName("VertexBins");
fVertexBins.GetXaxis()->Set(fNvtxBins,-1*fZvtxCut,fZvtxCut);
- fListOfHits.Add(allHits);
- fListOfHits.Add(doubleHits);
+
}
//_____________________________________________________________________
void AliFMDAnalysisTaskGenerateBackground::Init()
{
- std::cout<<"Init"<<std::endl;
-
-
fLastTrackByStrip.Reset(-1);
hHits->Fill(eta,phi);
Float_t nstrips = (ring =='O' ? 256 : 512);
fHitsByStrip.operator()(det,ring,sec,strip) +=1;
- TH1F* allHits = (TH1F*)fListOfHits.FindObject("allHits");
- TH1F* doubleHits = (TH1F*)fListOfHits.FindObject("DoubleHits");
+ TH1F* allHits = (TH1F*)fListOfHits.FindObject(Form("allHits_FMD%d%c",det,ring));
+ TH1F* doubleHits = (TH1F*)fListOfHits.FindObject(Form("DoubleHits_FMD%d%c",det,ring));
if(fHitsByStrip.operator()(det,ring,sec,strip) == 1)
allHits->Fill(eta);
for(Int_t iring = 0; iring<nRings; iring++) {
Char_t ring = (iring == 0 ? 'I' : 'O');
+ TH1F* allHits = (TH1F*)fListOfHits.FindObject(Form("allHits_FMD%d%c",det,ring));
+ TH1F* doubleHits = (TH1F*)fListOfHits.FindObject(Form("DoubleHits_FMD%d%c",det,ring));
+ fBackground->SetDoubleHitCorrection(det,ring,doubleHits);
+ doubleHits->Divide(allHits);
for(Int_t vertexBin=0;vertexBin<fNvtxBins ;vertexBin++) {
TH2F* hHits = (TH2F*)fListOfHits.FindObject(Form("hHits_FMD%d%c_vtx%d", det,ring,vertexBin));
TH2F* hPrimary = (TH2F*)fListOfPrimaries.FindObject( Form("hPrimary_FMD_%c_vtx%d",ring,vertexBin));
hCorrection->SetTitle(hCorrection->GetName());
fListOfCorrection.Add(hCorrection);
fBackground->SetBgCorrection(det,ring,vertexBin,hCorrection);
+
+
}
}
for(Int_t ring = 0;ring<nRings;ring++)
{
Char_t ringChar = (ring == 0 ? 'I' : 'O');
+ TH1F* allHits = (TH1F*)listOfHits->FindObject(Form("allHits_FMD%d%c",det,ringChar));
+ TH1F* doubleHits = (TH1F*)listOfHits->FindObject(Form("DoubleHits_FMD%d%c",det,ringChar));
+ fListOfHits.Add(allHits);
+ fListOfHits.Add(doubleHits);
for(Int_t v=0; v<fNvtxBins;v++)
{
fListOfPrimaries.Write();
fListOfCorrection.Write();
fVertexBins.Write();
+
fout.Close();
if(storeInOCDB) {