]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Bug fixes and improvements. The acceptance correction has been introduced using the...
authorhdalsgaa <hdalsgaa@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 14 Jan 2009 10:23:08 +0000 (10:23 +0000)
committerhdalsgaa <hdalsgaa@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 14 Jan 2009 10:23:08 +0000 (10:23 +0000)
FMD/analysis/AliFMDAnalysisTaskDensity.cxx
FMD/analysis/AliFMDAnalysisTaskDensity.h
FMD/analysis/AliFMDAnalysisTaskDndeta.cxx
FMD/analysis/AliFMDAnalysisTaskSE.cxx
FMD/analysis/AliFMDAnalysisTaskSE.h
FMD/analysis/AliFMDAnalysisTaskSharing.cxx
FMD/analysis/AliFMDAnalysisTaskSharing.h

index 47631f48db809afaf35dce50ea71d48743c07324..91622958201d491987075b2515c1e9aa24e8dfee 100644 (file)
@@ -20,6 +20,7 @@
 #include "TMath.h"
 #include "AliFMDAnaParameters.h"
 #include "AliFMDGeometry.h"
+#include "AliFMDRing.h"
 
 ClassImp(AliFMDAnalysisTaskDensity)
 
@@ -129,7 +130,7 @@ void AliFMDAnalysisTaskDensity::Exec(Option_t */*option*/)
   Double_t vertexBinDouble = (vertex[2] + pars->GetVtxCutZ()) / delta;
   
   Int_t vtxbin = (Int_t)vertexBinDouble;
-  
+
   fVertexString.SetString(Form("%d",vtxbin));
   //Reset everything
   for(UShort_t det=1;det<=3;det++) {
@@ -165,6 +166,8 @@ void AliFMDAnalysisTaskDensity::Exec(Option_t */*option*/)
          Float_t phi = TMath::ATan2(y,x);
          if(phi<0)
            phi = phi+2*TMath::Pi();
+         Float_t correction = GetAcceptanceCorrection(ring,strip);
+         if(correction) mult = mult / correction;
          hMult->Fill(eta,phi,mult);
          
        }
@@ -179,6 +182,27 @@ void AliFMDAnalysisTaskDensity::Exec(Option_t */*option*/)
   
 }
 //_____________________________________________________________________
+Float_t AliFMDAnalysisTaskDensity::GetAcceptanceCorrection(Char_t ring, UShort_t strip)
+{
+  AliFMDRing fmdring(ring);
+  fmdring.Init();
+  Float_t   rad       = fmdring.GetMaxR()-fmdring.GetMinR();
+  Float_t   segment   = rad / fmdring.GetNStrips();
+  Float_t   radius    = fmdring.GetMinR() + segment*strip;
+  
+  Float_t   basearea1 = 0.5*fmdring.GetBaseStripLength(strip)*TMath::Power(radius,2);
+  Float_t   basearea2 = 0.5*fmdring.GetBaseStripLength(strip)*TMath::Power((radius-segment),2);
+  Float_t   basearea  = basearea1 - basearea2;
+  
+  Float_t   area1     = 0.5*fmdring.GetStripLength(strip)*TMath::Power(radius,2);
+  Float_t   area2     = 0.5*fmdring.GetStripLength(strip)*TMath::Power((radius-segment),2);
+  Float_t   area      = area1 - area2;
+  
+  Float_t correction = area/basearea;
+  
+  return correction;
+}
+
 //
 //EOF
 //
index 92b53cc602122f15c60c2dd11cc149d959cb8454..3fefd7ce5e0a6b4697f788e654611916a9406f35 100644 (file)
@@ -42,10 +42,13 @@ class AliFMDAnalysisTaskDensity : public AliAnalysisTask
     virtual void Terminate(Option_t */*option*/) {}
     virtual void SetDebugLevel(Int_t level) {fDebug = level;}
     
+    Float_t       GetAcceptanceCorrection(Char_t ring, UShort_t strip);
     void SetOutputList(TList* outlist) {fOutputList = outlist;}
     void SetInputESDFMD(AliESDFMD* esdfmd) {fESD = esdfmd;}
     void SetInputVertex(AliESDVertex* vertex) {fVertex = vertex;}
+   
  private:
+    
     Int_t         fDebug;        //  Debug flag
     TList*        fOutputList;
     TObjArray     fArray;
@@ -53,6 +56,7 @@ class AliFMDAnalysisTaskDensity : public AliAnalysisTask
     TObjString    fVertexString;
     AliESDVertex* fVertex;
     Bool_t        fStandalone;
+    
     ClassDef(AliFMDAnalysisTaskDensity, 0); // Analysis task for FMD analysis
 };
  
index 7f3a292a9f285faafd52aa9dcb52778ab378d563..d2559f0d2439e2e0baee01c32864e43f03760f0b 100644 (file)
@@ -136,7 +136,7 @@ void AliFMDAnalysisTaskDndeta::Exec(Option_t */*option*/)
       
       
       TH2F* hMultInput = (TH2F*)fInputList->FindObject(Form("mult_FMD%d%c_vtxbin%d",det,ringChar,vtxbin));
-      // std::cout<<hMultInput->GetEntries()<<std::endl;
+      
       hMultTotal->Add(hMultInput);
       
       
@@ -150,7 +150,7 @@ void AliFMDAnalysisTaskDndeta::Exec(Option_t */*option*/)
 //_____________________________________________________________________
 void AliFMDAnalysisTaskDndeta::Terminate(Option_t */*option*/) {
   
-  /*
+  
   AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance();
   
   Int_t nVtxbins = pars->GetNvtxBins();
@@ -160,14 +160,15 @@ void AliFMDAnalysisTaskDndeta::Terminate(Option_t */*option*/) {
     Int_t nRings = (det==1 ? 1 : 2);
     for (UShort_t ir = 0; ir < nRings; ir++) {
       TObjArray* vtxArray = (TObjArray*)detArray->At(ir);
+      Char_t ringChar = (ir == 0 ? 'I' : 'O');
       for(Int_t i =0; i<nVtxbins; i++) {
        TH2F* hMultTotal = (TH2F*)vtxArray->At(i);
-       if(fNevents.At(i))
-         hMultTotal->Scale(1/(Float_t)fNevents.At(i));
+       TH1D* hMultProj   = hMultTotal->ProjectionX(Form("dNdeta_FMD%d%c_vtxbin%d_proj",det,ringChar,i),1,hMultTotal->GetNbinsY());
+       fOutputList->Add(hMultProj);
       }
     }
   }
-  */
+  
 }
 //_____________________________________________________________________
 //
index 6586266cbe7f5e52747ce786ed21516a89f365f6..09df659adbaeda3ce31c1a7e9d3ec8c96a0c6355 100644 (file)
@@ -25,13 +25,13 @@ AliFMDAnalysisTaskSE::AliFMDAnalysisTaskSE(const char* name):
   fBackground("BackgroundCorrected",kFALSE),
   fDndeta("dNdeta",kFALSE)
 {
-  // Default constructor
   DefineOutput(1, TList::Class());
 }
 //_____________________________________________________________________
 void AliFMDAnalysisTaskSE::UserCreateOutputObjects()
 {
-// Create the output container
+// Create the output containers
 //
   fListOfHistos = new TList();
   
@@ -88,7 +88,12 @@ void AliFMDAnalysisTaskSE::UserExec(Option_t */*option*/)
   
   PostData(1, fListOfHistos);
 }
+//_____________________________________________________________________
+void AliFMDAnalysisTaskSE::Terminate(Option_t */*option*/)
+{
+  fDndeta.Terminate("");
 
+}
 //_____________________________________________________________________
 //
 // EOF
index 765aa9e7a31e848ed80fd8d4210134819a077b84..6f71c418f09ee7fde6704b0fbae01159cf2d2885 100644 (file)
@@ -24,7 +24,7 @@ class AliFMDAnalysisTaskSE : public AliAnalysisTaskSE
     virtual void Init();
     virtual void UserCreateOutputObjects();
     virtual void UserExec(Option_t* /*option*/);
-    
+    void  Terminate(Option_t */*option*/);
  private:
     
     TList* fListOfHistos;
index edf3d338150bbbb4d16cbf7d53d6416edf8eb3ec..acf3e402a5c2da79a66c693ea6667335b9ccdc71 100644 (file)
@@ -142,8 +142,7 @@ void AliFMDAnalysisTaskSharing::Exec(Option_t */*option*/)
   }
   
   Double_t vertex[3];
-  fESD->GetPrimaryVertexSPD()->GetXYZ(vertex);
-  
+  GetVertex(vertex);
   fEsdVertex->SetXYZ(vertex);
   if(fStandalone) {
     PostData(0, foutputESDFMD); 
@@ -205,7 +204,29 @@ Float_t AliFMDAnalysisTaskSharing::GetMultiplicityOfStrip(Float_t mult,
   
   return nParticles;
 }
+//_____________________________________________________________________
+void AliFMDAnalysisTaskSharing::GetVertex(Double_t* vertexXYZ) 
+{
+  const AliESDVertex* vertex = 0;
+  vertex = fESD->GetPrimaryVertex();
+  if (!vertex)        vertex = fESD->GetPrimaryVertexSPD();
+  if (!vertex)        vertex = fESD->GetPrimaryVertexTPC();
+  if (!vertex)        vertex = fESD->GetVertex();
+  
+  if (vertex) {
+    vertex->GetXYZ(vertexXYZ);
+    return;
+  }
+  else if (fESD->GetESDTZERO()) { 
+    vertexXYZ[0] = 0;
+    vertexXYZ[1] = 0;
+    vertexXYZ[2] = fESD->GetT0zVertex();
 
+    return;
+  }
+  
+  return;
+}
 //_____________________________________________________________________
 //
 // EOF
index b90b787d6b18ecde5a14fbd3f7fabe85304f41fe..72580569df856973f7d4cd5b631523b5cb973414 100644 (file)
@@ -42,6 +42,7 @@ class AliFMDAnalysisTaskSharing : public AliAnalysisTask
     virtual void Terminate(Option_t* /* option*/) {}
     virtual void SetDebugLevel(Int_t level) {fDebug = level;}
     Float_t GetMultiplicityOfStrip(Float_t mult, Float_t Eprev, Float_t Enext, Int_t   det, Char_t  ring);
+    void GetVertex(Double_t* vertexXYZ) ;
     void SetFMDData(AliESDFMD* fmd) {foutputESDFMD = fmd;}
     void SetVertex(AliESDVertex* vertex) {fEsdVertex = vertex;}
     void SetInputESD(AliESDEvent* esd) {fESD = esd;}