Added Add method to the various correction classes and update AliSystematicSelection.
authorekman <ekman@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 7 Dec 2006 10:01:38 +0000 (10:01 +0000)
committerekman <ekman@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 7 Dec 2006 10:01:38 +0000 (10:01 +0000)
PWG0/AliCorrection.cxx
PWG0/AliCorrection.h
PWG0/AliCorrectionMatrix.cxx
PWG0/AliCorrectionMatrix.h
PWG0/dNdEta/AlidNdEtaCorrection.cxx
PWG0/dNdEta/AlidNdEtaCorrection.h
PWG0/dNdEta/AlidNdEtaSystematicsSelector.cxx
PWG0/dNdEta/dNdEtaAnalysis.cxx

index f7c2605..314ab3a 100644 (file)
@@ -161,6 +161,18 @@ void AliCorrection::Divide()
 }
 
 //____________________________________________________________________
+void AliCorrection::Add(AliCorrection* aCorrectionToAdd, Float_t c)
+{
+  //
+  // add to measured and generated the measured and generated of aCorrectionToAdd
+  // with the weight c
+
+  fEventCorr->Add(aCorrectionToAdd->GetEventCorrection(),c);
+  fTrackCorr->Add(aCorrectionToAdd->GetTrackCorrection(),c);
+}
+
+
+//____________________________________________________________________
 Bool_t AliCorrection::LoadHistograms(const Char_t* dir)
 {
   //
index 620b409..56a67bb 100644 (file)
@@ -41,6 +41,8 @@ public:
   void Multiply();
   void SetCorrectionToUnity();
 
+  void Add(AliCorrection* aCorrectionToAdd, Float_t c=1);
+
   virtual Bool_t LoadHistograms(const Char_t* dir = 0);
   virtual void SaveHistograms();
   virtual void DrawHistograms(const Char_t* name = 0);
index c54a532..2407b4f 100644 (file)
@@ -190,6 +190,18 @@ void AliCorrectionMatrix::Multiply()
 }
 
 //____________________________________________________________________
+void AliCorrectionMatrix::Add(AliCorrectionMatrix* aMatrixToAdd, Float_t c) {
+  //
+  // adds the measured and generated of aMatrixToAdd to measured and generated of this
+  // 
+  // NB: the correction will naturally stay the same
+  
+  fhMeas->Add(aMatrixToAdd->GetMeasuredHistogram(), c);
+  fhGene->Add(aMatrixToAdd->GetGeneratedHistogram(), c);
+}
+
+
+//____________________________________________________________________
 Bool_t AliCorrectionMatrix::LoadHistograms(const Char_t* dir)
 {
   //
index de28fb8..359fa82 100644 (file)
@@ -43,6 +43,8 @@ public:
   void Multiply();
   void SetCorrectionToUnity();
 
+  void Add(AliCorrectionMatrix* aMatrixToAdd, Float_t c=1);
+
   void SetAxisTitles(const Char_t* titleX="", const Char_t* titleY="", const Char_t* titleZ="");
 
   virtual Bool_t LoadHistograms(const Char_t* dir = 0);
index 731ddb2..8ae04a0 100644 (file)
@@ -146,6 +146,36 @@ Long64_t AlidNdEtaCorrection::Merge(TCollection* list)
 }
 
 //____________________________________________________________________
+void AlidNdEtaCorrection::Add(AlidNdEtaCorrection* aCorrectionsToAdd, Float_t c) {
+  //
+  // adds the measured and generated of aCorrectionsToAdd to measured and generated
+  // of all corrections in this
+
+  fTrack2ParticleCorrection      ->Add(aCorrectionsToAdd->GetTrack2ParticleCorrection() ,c);
+  fVertexRecoCorrection          ->Add(aCorrectionsToAdd->GetVertexRecoCorrection()     ,c);
+  fTriggerBiasCorrectionMBToINEL ->Add(aCorrectionsToAdd->GetTriggerBiasCorrectionINEL(),c);
+  fTriggerBiasCorrectionMBToNSD  ->Add(aCorrectionsToAdd->GetTriggerBiasCorrectionNSD() ,c);
+  fTriggerBiasCorrectionMBToND   ->Add(aCorrectionsToAdd->GetTriggerBiasCorrectionND()  ,c);
+    
+}
+
+//____________________________________________________________________
+void AlidNdEtaCorrection::Reset(void) {
+  //
+  // reset all corrections
+  // 
+
+  fTrack2ParticleCorrection      ->Reset();
+  fVertexRecoCorrection          ->Reset();
+  fTriggerBiasCorrectionMBToINEL ->Reset();
+  fTriggerBiasCorrectionMBToNSD  ->Reset();
+  fTriggerBiasCorrectionMBToND   ->Reset();
+    
+}
+
+
+
+//____________________________________________________________________
 Bool_t AlidNdEtaCorrection::LoadHistograms(const Char_t* dir)
 {
   //
index 6bb43e3..63e1fcf 100644 (file)
@@ -54,9 +54,12 @@ public:
   AliCorrection* GetTriggerBiasCorrectionND()   {return fTriggerBiasCorrectionMBToND;}
   AliCorrection* GetCorrection(CorrectionType correctionType);
 
+  void    Reset(void);
+  void    Add(AlidNdEtaCorrection* aCorrectionsToAdd, Float_t c=1);
+
   void    SaveHistograms();
   Bool_t  LoadHistograms(const Char_t* dir = 0);
-  void DrawHistograms();
+  void    DrawHistograms();
 
   Float_t GetMeasuredFraction(CorrectionType correctionType, Float_t ptCutOff, Float_t eta = -100, Bool_t debug = kFALSE);
 
index dfccaec..e00075f 100644 (file)
@@ -361,6 +361,28 @@ Bool_t AlidNdEtaSystematicsSelector::Process(Long64_t entry)
     if (!esdTrack)
       continue;
 
+    Float_t eta = particle->Eta();
+    Float_t pt  = particle->Pt();
+    
+    // non diffractive
+    if (processtype!=92 && processtype!=93 && processtype!=94) { 
+      if (triggerBiasStudy) fdNdEtaCorrectionTriggerBias[0]->FillTrackedParticle(vtxMC[2], eta, pt);
+      if (vertexRecoStudy)  fdNdEtaCorrectionVertexReco[0] ->FillTrackedParticle(vtxMC[2], eta, pt);
+    }
+    
+    // single diffractive
+    if (processtype==92 || processtype==93) { 
+      if (triggerBiasStudy) fdNdEtaCorrectionTriggerBias[1]->FillTrackedParticle(vtxMC[2], eta, pt);
+      if (vertexRecoStudy)  fdNdEtaCorrectionVertexReco[1] ->FillTrackedParticle(vtxMC[2], eta, pt);
+    }
+
+    // double diffractive
+    if (processtype==94) { 
+      if (triggerBiasStudy) fdNdEtaCorrectionTriggerBias[2]->FillTrackedParticle(vtxMC[2], eta, pt);
+      if (vertexRecoStudy)  fdNdEtaCorrectionVertexReco[2] ->FillTrackedParticle(vtxMC[2], eta, pt);
+    }
+    
+
     // using the properties of the mc particle
     Int_t label = TMath::Abs(esdTrack->GetLabel());
     TParticle* particle = stack->Particle(label);
@@ -409,8 +431,6 @@ Bool_t AlidNdEtaSystematicsSelector::Process(Long64_t entry)
       case 2212: id = 2; break;
       default:   id = 3; break;
     }
-    Float_t eta = particle->Eta();
-    Float_t pt  = particle->Pt();
 
     if (vertexReconstructed && eventTriggered) {
       if (fdNdEtaCorrectionSpecies[id])
@@ -419,25 +439,6 @@ Bool_t AlidNdEtaSystematicsSelector::Process(Long64_t entry)
       if (fPIDTracks)
        fPIDTracks->Fill(particle->GetPdgCode());
     }
-
-    // non diffractive
-    if (processtype!=92 && processtype!=93 && processtype!=94) { 
-      if (triggerBiasStudy) fdNdEtaCorrectionTriggerBias[0]->FillTrackedParticle(vtxMC[2], eta, pt);
-      if (vertexRecoStudy)  fdNdEtaCorrectionVertexReco[0] ->FillTrackedParticle(vtxMC[2], eta, pt);
-    }
-    
-    // single diffractive
-    if (processtype==92 || processtype==93) { 
-      if (triggerBiasStudy) fdNdEtaCorrectionTriggerBias[1]->FillTrackedParticle(vtxMC[2], eta, pt);
-      if (vertexRecoStudy)  fdNdEtaCorrectionVertexReco[1] ->FillTrackedParticle(vtxMC[2], eta, pt);
-    }
-
-    // double diffractive
-    if (processtype==94) { 
-      if (triggerBiasStudy) fdNdEtaCorrectionTriggerBias[2]->FillTrackedParticle(vtxMC[2], eta, pt);
-      if (vertexRecoStudy)  fdNdEtaCorrectionVertexReco[2] ->FillTrackedParticle(vtxMC[2], eta, pt);
-    }
-
   } // end of track loop
 
   
index 0d81fbd..21ae3b6 100644 (file)
@@ -292,8 +292,9 @@ void dNdEtaAnalysis::Finish(AlidNdEtaCorrection* correction, Float_t ptCut, Alid
     //printf("vertexBinGlobalBegin = %d, vertexBinWidth = %d\n", vertexBinGlobalBegin, vertexBinWidth);
     for (Int_t vertexPos=0; vertexPos<kVertexBinning; ++vertexPos)
     {
+
       Int_t vertexBinBegin = vertexBinGlobalBegin;
-      Int_t vertexBinEnd = vertexBinGlobalBegin + vertexBinWidth * (kVertexBinning-1);
+      Int_t vertexBinEnd   = vertexBinGlobalBegin + vertexBinWidth * (kVertexBinning-1);
 
       // the first histogram is always for the whole vertex range
       if (vertexPos > 0)
@@ -314,10 +315,14 @@ void dNdEtaAnalysis::Finish(AlidNdEtaCorrection* correction, Float_t ptCut, Alid
       Float_t sum = 0;
       Float_t sumError2 = 0;
       for (Int_t iVtx = vertexBinBegin; iVtx < vertexBinEnd; iVtx++)
-      {
-        if (vtxVsEta->GetBinContent(iVtx, iEta) != 0)
+      {      
+       if (vtxVsEta->GetBinContent(iVtx, iEta) != 0)
         {
           sum = sum + vtxVsEta->GetBinContent(iVtx, iEta);
+
+         if (sumError2 > 10e30)
+           printf("WARNING: sum of error2 is dangerously large - be prepared for crash... ");
+
           sumError2 = sumError2 + TMath::Power(vtxVsEta->GetBinError(iVtx, iEta),2);
         }
       }
@@ -333,7 +338,7 @@ void dNdEtaAnalysis::Finish(AlidNdEtaCorrection* correction, Float_t ptCut, Alid
       }
 
       printf("Eta: %d Vertex Range: %d %d, Event Count %f, Track Sum: %f, Track Sum corrected: %f\n", iEta, vertexBinBegin, vertexBinEnd, totalEvents, sum, sum / ptCutOffCorrection);
-
+      
       Float_t dndeta = sum / totalEvents;
       Float_t error  = TMath::Sqrt(sumError2) / totalEvents;
 
@@ -348,6 +353,7 @@ void dNdEtaAnalysis::Finish(AlidNdEtaCorrection* correction, Float_t ptCut, Alid
 
       fdNdEtaPtCutOffCorrected[vertexPos]->SetBinContent(iEta, dndeta);
       fdNdEtaPtCutOffCorrected[vertexPos]->SetBinError(iEta, error);
+
     }
   }
 }