]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
I added a new field in AliESDCaloCluster/AliAODCluster to store the MC energy fractio...
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 21 Apr 2013 21:47:24 +0000 (21:47 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 21 Apr 2013 21:47:24 +0000 (21:47 +0000)
on the fly, the field does not need to be streamed (commented with //!), so it will not increase the size on disk.
Salvatore Aiola <salvatore.aiola@cern.ch>

PWG/EMCAL/AliAnalysisTaskEMCALClusterizeFast.cxx
PWGJE/EMCALJetTasks/AliEmcalJetTask.cxx
STEER/AOD/AliAODCluster.cxx
STEER/AOD/AliAODCluster.h
STEER/ESD/AliESDCaloCluster.cxx
STEER/ESD/AliESDCaloCluster.h
STEER/STEERBase/AliVCluster.h

index ac9dde73aa15362bab0312d5912aea7bad5e65be..5ad7504bb9af2eeb9c19dac48dfdf7e201649dd3 100644 (file)
@@ -242,13 +242,13 @@ void AliAnalysisTaskEMCALClusterizeFast::UserExec(Option_t *)
   if (fDoUpdateCells) 
     UpdateCells();
 
-  if (!fDoClusterize || (!fAttachClusters && !fOutputAODBranch))
+  if (!fDoClusterize || (!fAttachClusters && !fOutputAODBranch) || !fCaloClusters)
     return;
 
   UpdateClusters();
   CalibrateClusters();
 
-  if (fCaloClusters && fOutputAODBranch && fCaloClusters != fOutputAODBranch)
+  if (fOutputAODBranch && fCaloClusters != fOutputAODBranch)
     CopyClusters(fCaloClusters, fOutputAODBranch);
 }
 
@@ -284,6 +284,7 @@ void AliAnalysisTaskEMCALClusterizeFast::CopyClusters(TClonesArray *orig, TClone
     dc->SetM02(oc->GetM02());
     dc->SetM20(oc->GetM20());
     dc->SetDistanceToBadChannel(oc->GetDistanceToBadChannel()); 
+    dc->SetMCEnergyFraction(oc->GetMCEnergyFraction());
 
     //MC
     UInt_t nlabels = oc->GetNLabels();
@@ -657,10 +658,13 @@ void AliAnalysisTaskEMCALClusterizeFast::RecPoints2Clusters(TClonesArray *clus)
     Double32_t ratios[ncells];
     Int_t *dlist = recpoint->GetDigitsList();
     Float_t *elist = recpoint->GetEnergiesList();
+    Double_t mcEnergy = 0;
     for (Int_t c = 0; c < ncells; ++c) {
       AliEMCALDigit *digit = static_cast<AliEMCALDigit*>(fDigitsArr->At(dlist[c]));
       absIds[ncells_true] = digit->GetId();
       ratios[ncells_true] = elist[c]/recpoint->GetEnergy();
+      if (digit->GetIparent(1) > 0)
+       mcEnergy += digit->GetDEParent(1)/recpoint->GetEnergy();
       ++ncells_true;
     }
     
@@ -694,16 +698,7 @@ void AliAnalysisTaskEMCALClusterizeFast::RecPoints2Clusters(TClonesArray *clus)
     recpoint->GetElipsAxis(elipAxis);
     c->SetM02(elipAxis[0]*elipAxis[0]);
     c->SetM20(elipAxis[1]*elipAxis[1]);
-    // Now it is done in CalibrateClusters()
-    /*
-    if (fPedestalData) {
-      c->SetDistanceToBadChannel(recpoint->GetDistanceToBadTower()); 
-    } else {
-      if (fRecoUtils && fRecoUtils->IsBadChannelsRemovalSwitchedOn()) {
-        fRecoUtils->RecalculateClusterDistanceToBadChannel(fGeom, fCaloCells, c);
-      } 
-    }
-    */
+    c->SetMCEnergyFraction(mcEnergy);
 
     //MC
     AliESDCaloCluster *esdClus = dynamic_cast<AliESDCaloCluster*>(c);
index 27cd2d66e94a07d20cea7ed4a70eb9007c64ce4e..5699470972a66b58e26e6c2a6873c6de3d4cd989 100644 (file)
@@ -452,7 +452,7 @@ void AliEmcalJetTask::FindJets()
           maxNe = cPt;
 
         if (c->GetLabel() > fMinMCLabel) // MC particle
-          mcpt += cPt;
+          mcpt += cPt * c->GetMCEnergyFraction();
 
         if (cPhi<0) 
           cPhi += TMath::TwoPi();
index def99eaa0c5f98ef4a0206700b4b3548025ba0da..e3d5e21d8a88abdd5694f7568ccd48727d3a21d3 100644 (file)
@@ -33,7 +33,8 @@ AliAODCluster::AliAODCluster() :
   fNLabel(0),
   fLabel(0x0),
   fFilterMap(0),
-  fType(kUndef)
+  fType(kUndef),
+  fMCEnergyFraction(0.)
 {
   // default constructor
 
@@ -57,7 +58,8 @@ AliAODCluster::AliAODCluster(Int_t id,
   fNLabel(0),
   fLabel(0x0),
   fFilterMap(selectInfo),
-  fType(ttype)
+  fType(ttype),
+  fMCEnergyFraction(0.)
 {
   // constructor
   for (Int_t i = 0; i <  3; i++) fPosition[i] = 0.;
@@ -84,7 +86,8 @@ AliAODCluster::AliAODCluster(Int_t id,
   fNLabel(0),
   fLabel(0x0),
   fFilterMap(selectInfo),
-  fType(ttype)
+  fType(ttype),
+  fMCEnergyFraction(0.)
 {
   // constructor
   for (Int_t i = 0; i <  3; i++) fPosition[i] = 0.;
@@ -122,7 +125,8 @@ AliAODCluster::AliAODCluster(const AliAODCluster& clus) :
   fNLabel(0),
   fLabel(0x0),
   fFilterMap(clus.fFilterMap),
-  fType(clus.fType)
+  fType(clus.fType),
+  fMCEnergyFraction(clus.fMCEnergyFraction)
 {
   // Copy constructor
 
@@ -149,6 +153,8 @@ AliAODCluster& AliAODCluster::operator=(const AliAODCluster& clus)
     fFilterMap = clus.fFilterMap;
 
     fType = clus.fType;
+
+    fMCEnergyFraction = clus.fMCEnergyFraction;
   }
 
   return *this;
index 706ddf3688373b2d477f7a48a324ae34a9f0fa9b..4244d9613564610ba627c7fc52ed82ab515b98b8 100644 (file)
@@ -90,7 +90,9 @@ class AliAODCluster : public AliVCluster {
     else {for(Int_t i=0; i<13; fPID[i++]=0) ;} fPID[AliAODCluster::kUnknown]=1.;}
   
   void RemoveLabel();
-  
+
+  Double_t    GetMCEnergyFraction() const           { return fMCEnergyFraction ; }
+  void        SetMCEnergyFraction(Double_t e)       { fMCEnergyFraction = e    ; }
   
  private :
   
@@ -107,6 +109,8 @@ class AliAODCluster : public AliVCluster {
   UInt_t        fFilterMap;      // filter information, one bit per set of cuts
   
   Char_t        fType;           // cluster type
+
+  Double_t      fMCEnergyFraction;     //!MC energy (embedding)
   
   ClassDef(AliAODCluster,6);
 };
index e05f7d46e8414ba613d51a1180b4b2273d4af081..f02242b393a2d9a2dbb6f0280c2ba06252c38172 100644 (file)
@@ -47,7 +47,9 @@ AliESDCaloCluster::AliESDCaloCluster() :
   fDistToBadChannel(1024),
   fID(0),
   fNExMax(0),
-  fClusterType(kUndef), fTOF(0.)
+  fClusterType(kUndef), 
+  fTOF(0.),
+  fMCEnergyFraction(0.)
 {
   //
   // The default ESD constructor 
@@ -76,7 +78,8 @@ AliESDCaloCluster::AliESDCaloCluster(const AliESDCaloCluster& clus) :
   fID(clus.fID),
   fNExMax(clus.fNExMax),
   fClusterType(clus.fClusterType),
-  fTOF(clus.fTOF)
+  fTOF(clus.fTOF),
+  fMCEnergyFraction(0.)
 {
   //
   // The copy constructor 
@@ -180,6 +183,7 @@ AliESDCaloCluster &AliESDCaloCluster::operator=(const AliESDCaloCluster& source)
     fLabels = 0;
   }
 
+  fMCEnergyFraction = source.fMCEnergyFraction;
   
   return *this;
 
index 1fe02e2d2994234b47933086d8d8c1cf7c1f5b87..396650a29b04ca360b0195f95f58f8d30a2e91ce 100644 (file)
@@ -140,6 +140,9 @@ class AliESDCaloCluster : public AliVCluster
   Double_t GetCellAmplitudeFraction(Int_t i) const {  
     if (fCellsAmpFraction && i >=0 && i < fNCells ) return fCellsAmpFraction[i];    
     else return -1;}
+
+  Double_t    GetMCEnergyFraction() const           { return fMCEnergyFraction ; }
+  void        SetMCEnergyFraction(Double_t e)       { fMCEnergyFraction = e    ; }
   
  protected:
   
@@ -168,6 +171,7 @@ class AliESDCaloCluster : public AliVCluster
   Char_t       fClusterType;       // Flag for different cluster type/versions
   Double_t     fTOF;               //[0,0,12] time-of-flight
   
+  Double_t     fMCEnergyFraction;          //!MC energy (embedding)
   
   ClassDef(AliESDCaloCluster,11)  //ESDCaloCluster 
 
index 311d2187983812ffa3e7d95ce9c960934ce25e3f..ad3f1a71995e7118c4508e311beed62dbda49856 100644 (file)
@@ -118,6 +118,9 @@ class AliVCluster : public TObject
   virtual Int_t       GetNTracksMatched() const     {return 0 ; }
   virtual TObject    *GetTrackMatched(Int_t) const  {return 0 ; }//AODCaloCluster
   virtual Int_t       GetTrackMatchedIndex() const  {return -1; }//ESDCaloCluster
+
+  virtual Double_t    GetMCEnergyFraction() const           {return 0 ; }
+  virtual void        SetMCEnergyFraction(Double_t)         { ; }
   
   virtual void GetMomentum(TLorentzVector &/*tl*/, Double_t * /*v*/) { ; }