]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - JETAN/AliJetESDFillUnitArrayTracks.cxx
Rename method Dump to DumpPayLoad to avoid compilation warning since mother class...
[u/mrichter/AliRoot.git] / JETAN / AliJetESDFillUnitArrayTracks.cxx
index 837fc333d29d74c7c23574890590f463a374e6f8..05d41409b71a92c8a5681c42a7b5539eb90fa127 100644 (file)
@@ -29,6 +29,7 @@
 
 // --- AliRoot header files ---
 #include "AliJetUnitArray.h"
+#include "AliJetHadronCorrectionv1.h"
 #include "AliJetESDFillUnitArrayTracks.h"
 
 // --- ROOT system ---
@@ -112,7 +113,7 @@ AliJetESDFillUnitArrayTracks& AliJetESDFillUnitArrayTracks::operator=(const AliJ
 //____________________________________________________________________________
 void AliJetESDFillUnitArrayTracks::InitParameters()
 {
-  fHadCorr        = 0;                 // For hadron correction
+  //  fHadCorr        = 0;                 // For hadron correction
   fNumUnits = fGeom->GetNCells();      // Number of towers in EMCAL
   cout << "In AliJetESDFillUnitArrayTracks:InitParameters(), Ncells : " << fNumUnits << endl;
 
@@ -149,6 +150,7 @@ void AliJetESDFillUnitArrayTracks::Exec(Option_t* const /*option*/)
   
   // Set parameters
   InitParameters();
+  //  fRef->Clear();
 
   // get number of tracks in event (for the loop)
   Int_t goodTrack = 0;
@@ -223,6 +225,7 @@ void AliJetESDFillUnitArrayTracks::Exec(Option_t* const /*option*/)
       if (TMath::Abs(track->GetLabel()) < 10000) sflag[goodTrack]=1;
       cflag[goodTrack]=0;
       if (pt > ptMin) cflag[goodTrack]=1;                       // pt cut
+      //      fRef->Add(track);
 
       if(fGrid==0)
        {
@@ -234,6 +237,10 @@ void AliJetESDFillUnitArrayTracks::Exec(Option_t* const /*option*/)
 
          AliJetUnitArray *uArray = (AliJetUnitArray*)fUnitArray->At(idTPC-1);
          TRefArray *reference = uArray->GetUnitTrackRef();
+         if (reference->GetEntries() == 0)  {
+             new(reference) TRefArray(TProcessID::GetProcessWithUID(track));
+         }
+
          reference->Add(track);
 
          Float_t unitEnergy = 0.;
@@ -303,6 +310,10 @@ void AliJetESDFillUnitArrayTracks::Exec(Option_t* const /*option*/)
                    Int_t id0 = fGrid0->GetIndex(phi,eta)-1;
                    AliJetUnitArray *uArray0 = (AliJetUnitArray*)fUnitArray->At(id0+fNumUnits+nElements);
                    TRefArray *reference0 = uArray0->GetUnitTrackRef();
+                   if (reference0->GetEntries() == 0)  {
+                       new(reference0) TRefArray(TProcessID::GetProcessWithUID(track));
+                   }
+
                    reference0->Add(track);
 
                    Float_t uEnergy0 = uArray0->GetUnitEnergy();
@@ -339,6 +350,10 @@ void AliJetESDFillUnitArrayTracks::Exec(Option_t* const /*option*/)
                    Int_t id1 = fGrid1->GetIndex(phi,eta)-1+n0;
                    AliJetUnitArray *uArray1 = (AliJetUnitArray*)fUnitArray->At(id1+fNumUnits+nElements);
                    TRefArray *reference1 = uArray1->GetUnitTrackRef();
+                   if (reference1->GetEntries() == 0)  {
+                       new(reference1) TRefArray(TProcessID::GetProcessWithUID(track));
+                   }
+
                    reference1->Add(track);
 
                    Float_t uEnergy1 = uArray1->GetUnitEnergy();
@@ -375,6 +390,10 @@ void AliJetESDFillUnitArrayTracks::Exec(Option_t* const /*option*/)
                    Int_t id2 = fGrid2->GetIndex(phi,eta)-1+n0+n1;
                    AliJetUnitArray *uArray2 = (AliJetUnitArray*)fUnitArray->At(id2+fNumUnits+nElements);
                    TRefArray *reference2 = uArray2->GetUnitTrackRef();
+                   if (reference2->GetEntries() == 0)  {
+                       new(reference2) TRefArray(TProcessID::GetProcessWithUID(track));
+                   }
+
                    reference2->Add(track);
 
                    Float_t uEnergy2 = uArray2->GetUnitEnergy();
@@ -411,6 +430,10 @@ void AliJetESDFillUnitArrayTracks::Exec(Option_t* const /*option*/)
                    Int_t id3 = fGrid3->GetIndex(phi,eta)-1+n0+n1+n2;
                    AliJetUnitArray *uArray3 = (AliJetUnitArray*)fUnitArray->At(id3+fNumUnits+nElements);
                    TRefArray *reference3 = uArray3->GetUnitTrackRef();
+                   if (reference3->GetEntries() == 0)  {
+                       new(reference3) TRefArray(TProcessID::GetProcessWithUID(track));
+                   }
+
                    reference3->Add(track);
 
                    Float_t uEnergy3 = uArray3->GetUnitEnergy();
@@ -447,6 +470,10 @@ void AliJetESDFillUnitArrayTracks::Exec(Option_t* const /*option*/)
                    Int_t id4 = fGrid4->GetIndex(phi,eta)-1+n0+n1+n2+n3;
                    AliJetUnitArray *uArray4 = (AliJetUnitArray*)fUnitArray->At(id4+fNumUnits+nElements);
                    TRefArray *reference4 = uArray4->GetUnitTrackRef();
+                   if (reference4->GetEntries() == 0)  {
+                       new(reference4) TRefArray(TProcessID::GetProcessWithUID(track));
+                   }
+
                    reference4->Add(track);
 
                    Float_t uEnergy4 = uArray4->GetUnitEnergy();
@@ -486,6 +513,10 @@ void AliJetESDFillUnitArrayTracks::Exec(Option_t* const /*option*/)
              
              AliJetUnitArray *uArray = (AliJetUnitArray*)fUnitArray->At(towerID);
              TRefArray *reference = uArray->GetUnitTrackRef();
+             if (reference->GetEntries() == 0)  {
+                 new(reference) TRefArray(TProcessID::GetProcessWithUID(track));
+             }
+
              reference->Add(track);
 
              Float_t unitEnergy = uArray->GetUnitEnergy(); 
@@ -499,14 +530,30 @@ void AliJetESDFillUnitArrayTracks::Exec(Option_t* const /*option*/)
 
              // Do Hadron Correction
              // This is under construction !!!!!!!!!!!!!!!!!!!!!!!
-             // Parametrization to be added
-             if (fApplyMIPCorrection != 0) 
+             // For the moment I apply MIP correction if p >= 0.5 GeV/c
+             if (fApplyMIPCorrection != 0 && p3.Mag() >= 0.5
                { 
-//               Float_t   hCEnergy = fHadCorr->GetEnergy(p3.Mag(), (Double_t)eta,0);
-//               unitEnergy -= hCEnergy*TMath::Sin(2.0*TMath::ATan(TMath::Exp(-eta)));
+                 ((AliJetHadronCorrectionv1*)fHadCorr)->SetGeometry("EMCAL_COMPLETE",1.);
+
+                 // Get track position at the outer part of the reconstruction ~ TRD
+                 Double_t phiOut = track->GetOuterParam()->Phi();
+                 Double_t etaOut = track->GetOuterParam()->Eta();
+
+                 // If the track in the outer part of the TPC/TDR ? is inside 
+                 // the calorimeter, it can deposit part of its energy
+                 // We can then correct on average for these particles
+                 if((etaOut >= fEtaMin && etaOut <= fEtaMax) &&
+                    (phiOut >= fPhiMin && phiOut <= fPhiMax))// &&
+                   {
+                     Double_t   hCEnergy = (Double_t)fHadCorr->GetEnergy(p3.Mag(), (Double_t)eta,0);
+                     unitEnergy -= hCEnergy*TMath::Sin(2.0*TMath::ATan(TMath::Exp(-eta)));
+                   }
                } //end Hadron Correction loop
 
-             uArray->SetUnitEnergy(unitEnergy + pt);
+             cout << "unitEnergy + pt = " << unitEnergy << " + " << pt << " = " << unitEnergy + pt << endl;
+
+             if((unitEnergy + pt) > 0.) uArray->SetUnitEnergy(unitEnergy + pt);
+             else uArray->SetUnitEnergy(0.);
 
              // Put a pt cut flag
              if(uArray->GetUnitEnergy()<ptMin){
@@ -539,6 +586,10 @@ void AliJetESDFillUnitArrayTracks::Exec(Option_t* const /*option*/)
 
            AliJetUnitArray *uArray = (AliJetUnitArray*)fUnitArray->At(fNumUnits-1+idTPC);
            TRefArray *reference = uArray->GetUnitTrackRef();
+           if (reference->GetEntries() == 0)  {
+               new(reference) TRefArray(TProcessID::GetProcessWithUID(track));
+           }
+
            reference->Add(track);
 
            Float_t unitEnergy2 = uArray->GetUnitEnergy(); 
@@ -587,6 +638,9 @@ void AliJetESDFillUnitArrayTracks::Exec(Option_t* const /*option*/)
       cout << "goodTracks: " << goodTrack << endl;
     }
 
+  //  fSignalFlag.Set(goodTrack,sflag);
+  //  fCutFlag.Set(goodTrack,cflag);
+
   delete[] sflag;
   delete[] cflag;