]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
analysis upgrade to take into account double hits in p+p collisions. Fix of warnings...
authorhdalsgaa <hdalsgaa@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 2 Jun 2009 23:01:41 +0000 (23:01 +0000)
committerhdalsgaa <hdalsgaa@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 2 Jun 2009 23:01:41 +0000 (23:01 +0000)
FMD/analysis/AliFMDAnaCalibBackgroundCorrection.cxx
FMD/analysis/AliFMDAnaCalibBackgroundCorrection.h
FMD/analysis/AliFMDAnaParameters.cxx
FMD/analysis/AliFMDAnaParameters.h
FMD/analysis/AliFMDAnalysisTaskDensity.cxx
FMD/analysis/AliFMDAnalysisTaskGenerateBackground.cxx

index f11acc982655d80ff108a8b28323b44c1ba30ebe..128262a610304df14e5b47e412c4925eacd425c4 100644 (file)
@@ -1,6 +1,7 @@
 
 #include "AliFMDAnaCalibBackgroundCorrection.h"
 #include <TH2F.h>
+#include <TH1F.h>
 #include <TBrowser.h>
 
 ClassImp(AliFMDAnaCalibBackgroundCorrection)
@@ -12,7 +13,8 @@ ClassImp(AliFMDAnaCalibBackgroundCorrection)
 AliFMDAnaCalibBackgroundCorrection::AliFMDAnaCalibBackgroundCorrection() : TObject(),
                                                                           fArray(),
                                                                           fAxis(),
-                                                                          fIsInit(kFALSE)
+                                                                          fIsInit(kFALSE),
+                                                                          fListOfDoubleHitCorrection()
 {
   
   
@@ -22,7 +24,7 @@ AliFMDAnaCalibBackgroundCorrection::AliFMDAnaCalibBackgroundCorrection() : TObje
 
 //____________________________________________________________________
 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 
 }
@@ -59,6 +61,22 @@ void AliFMDAnaCalibBackgroundCorrection::SetBgCorrection(Int_t det,
   
 }
 //____________________________________________________________________
+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) {
   
  
index f71f7bdbfd20a053e9337d8d9797c3d113285358..1131ed0304aa10bbfe514717e9fbc84d72022fb1 100644 (file)
@@ -5,7 +5,9 @@
 #include <TObjArray.h>
 // #include <TH2F.h>
 #include <TAxis.h>
+#include <TList.h>
 class TH2F;
+class TH1F;
 class TBrowser;
 
 class AliFMDAnaCalibBackgroundCorrection : public TObject
@@ -19,6 +21,8 @@ class AliFMDAnaCalibBackgroundCorrection : public TObject
   
   TH2F*   GetBgCorrection(Int_t det, Char_t ring, Int_t vtxbin);
   void    SetBgCorrection(Int_t det, Char_t ring, Int_t vtxbin, TH2F* hCorrection);
+  TH1F*   GetDoubleHitCorrection(Int_t det, Char_t ring);
+  void    SetDoubleHitCorrection(Int_t det, Char_t ring, TH1F* hCorrection);
   void    SetRefAxis(TAxis* axis);
   Int_t   GetNvtxBins();
   Float_t GetVtxCutZ();
@@ -31,7 +35,7 @@ class AliFMDAnaCalibBackgroundCorrection : public TObject
   TObjArray  fArray;
   TAxis      fAxis;
   Bool_t     fIsInit;
-  
+  TList      fListOfDoubleHitCorrection;
   ClassDef(AliFMDAnaCalibBackgroundCorrection,1);
 };
 
index ed841df5da493f1f97ba96ebd647fcf007b40d52..7eb6f1296a9f50160050d5b9c6107e5a10a3e0d6 100644 (file)
@@ -253,6 +253,18 @@ TH2F* AliFMDAnaParameters::GetBackgroundCorrection(Int_t det,
   
   return fBackground->GetBgCorrection(det,ring,vtxbin);
 }
+//____________________________________________________________________
+
+TH1F* AliFMDAnaParameters::GetDoubleHitCorrection(Int_t det, 
+                                                 Char_t ring) {
+  
+  if(!fIsInit) {
+    AliWarning("Not initialized yet. Call Init() to remedy");
+    return 0;
+  }
+  
+  return fBackground->GetDoubleHitCorrection(det,ring);
+}
 //_____________________________________________________________________
 Float_t AliFMDAnaParameters::GetMaxR(Char_t ring) {
   Float_t radius = 0;
index dae14d65b1ba59e2f55d9dcffc76e95236195a6d..51dd0b2d7b7376aa976a9b0deec76cdc62611fcb 100644 (file)
@@ -73,6 +73,7 @@ public:
   static const char* GetBackgroundPath() { return fgkBackgroundCorrection;}
   static const char* GetEdistPath()      { return fgkEnergyDists;}
   TH2F* GetBackgroundCorrection(Int_t det, Char_t ring, Int_t vtxbin);
+  TH1F* GetDoubleHitCorrection(Int_t det, Char_t ring);
   Float_t GetPhiFromSector(UShort_t det, Char_t ring, UShort_t sec);
   Float_t GetEtaFromStrip(UShort_t det, Char_t ring, UShort_t sec, UShort_t strip, Float_t zvtx);
   Float_t  GetStripLength(Char_t ring, UShort_t strip)  ;
index 17622861497a822d9e3193506f8eb970b5a439b0..f277ce3f2593325ed3b9ac829e024155cc7d0e82 100644 (file)
@@ -256,10 +256,12 @@ void AliFMDAnalysisTaskDensity::Exec(Option_t */*option*/)
          
          //std::cout<<"before "<<correction<<std::endl;
          if(fESD->GetUniqueID() == kTRUE) {
-           if(det == 3) 
-             correction = correction / fFuncNeg->Eval(eta);
-           else
-             correction = correction / fFuncPos->Eval(eta);
+           TH1F* hDoubleHitCorrection = pars->GetDoubleHitCorrection(det,ring);
+           //if(det == 3) 
+           if(hDoubleHitCorrection->GetBinContent(hDoubleHitCorrection->FindBin(eta)) != 0)
+             correction = correction / hDoubleHitCorrection->GetBinContent(hDoubleHitCorrection->FindBin(eta));
+           //else
+           //  correction = correction / pars->GetDoubleHitCorrection()->GetBinContent(pars->GetDoubleHitCorrection()->FindBin(eta));
          }
          
          // std::cout<<correction<<std::endl;
index a42b891db36ba5f99ba9ce3568c42b15dd4e0e17..4b2a634489bd648015633d6fb21949ee8299e541 100644 (file)
@@ -68,6 +68,16 @@ void AliFMDAnalysisTaskGenerateBackground::UserCreateOutputObjects()
     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),
@@ -78,21 +88,14 @@ void AliFMDAnalysisTaskGenerateBackground::UserCreateOutputObjects()
       } 
     }
   }
-  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);
   
   
@@ -163,8 +166,8 @@ void AliFMDAnalysisTaskGenerateBackground::UserExec(Option_t */*option*/)
        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);
@@ -216,6 +219,10 @@ void AliFMDAnalysisTaskGenerateBackground::GenerateCorrection() {
     
     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));
@@ -224,6 +231,8 @@ void AliFMDAnalysisTaskGenerateBackground::GenerateCorrection() {
        hCorrection->SetTitle(hCorrection->GetName());
        fListOfCorrection.Add(hCorrection);
        fBackground->SetBgCorrection(det,ring,vertexBin,hCorrection);
+       
+       
       }
       
     }
@@ -251,6 +260,10 @@ void AliFMDAnalysisTaskGenerateBackground::ReadFromFile(const Char_t* filename,
        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++)
              {
                
@@ -275,6 +288,7 @@ void AliFMDAnalysisTaskGenerateBackground::ReadFromFile(const Char_t* filename,
   fListOfPrimaries.Write();
   fListOfCorrection.Write();
   fVertexBins.Write();
+  
   fout.Close();
   
   if(storeInOCDB) {