]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Changes from Salvatore
authorloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 3 Mar 2013 13:05:38 +0000 (13:05 +0000)
committerloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 3 Mar 2013 13:05:38 +0000 (13:05 +0000)
21 files changed:
PWG/CMakelibPWGEMCAL.pkg
PWG/EMCAL/AliEmcalMCTrackSelector.cxx
PWG/EMCAL/AliEmcalMCTrackSelector.h
PWG/EMCAL/AliEmcalPicoTrackMaker.cxx
PWG/EMCAL/AliPicoTrack.cxx
PWG/EMCAL/AliPicoTrack.h
PWGJE/EMCALJetTasks/AliAnalysisTaskDeltaPt.cxx
PWGJE/EMCALJetTasks/AliEmcalJetTask.cxx
PWGJE/EMCALJetTasks/AliJetConstituentTagCopier.cxx
PWGJE/EMCALJetTasks/AliJetConstituentTagCopier.h
PWGJE/EMCALJetTasks/AliJetEmbeddingFromAODTask.cxx
PWGJE/EMCALJetTasks/AliJetEmbeddingFromPYTHIATask.cxx
PWGJE/EMCALJetTasks/AliJetEmbeddingFromPYTHIATask.h
PWGJE/EMCALJetTasks/AliJetModelBaseTask.cxx
PWGJE/EMCALJetTasks/AliJetModelBaseTask.h
PWGJE/EMCALJetTasks/AliJetResponseMaker.cxx
PWGJE/EMCALJetTasks/AliJetResponseMaker.h
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskSAJF.cxx
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskSAJF.h
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskSAQA.cxx
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskSAQA.h

index 38828fe3e2e96d16722fdc7a271b97e64c0f4386..76dfc2feeb91a0b44e35130ae721e2eed1da9477 100644 (file)
@@ -52,4 +52,4 @@ string ( REPLACE ".cxx" ".h" EXPORT "${SRCS}" )
 
 set ( DHDR  PWGEMCALLinkDef.h)
 
-set ( EINCLUDE PWG/EMCAL EMCAL OADB STEER/ESD STEER/STEERBase ANALYSIS)
+set ( EINCLUDE PWG/Tools PWG/EMCAL EMCAL OADB STEER/ESD STEER/STEERBase ANALYSIS)
index e3362a304573ab71730033ce0d9e5f20a5185c02..ace0d3fdb83c381f65c75e9c9fd2d9a795e43844 100644 (file)
@@ -7,8 +7,8 @@
 #include "AliEmcalMCTrackSelector.h"
 
 #include <TClonesArray.h>
-#include <TH1I.h>
 
+#include "AliNamedArrayI.h"
 #include "AliAnalysisManager.h"
 #include "AliVEventHandler.h"
 #include "AliVEvent.h"
@@ -88,7 +88,7 @@ void AliEmcalMCTrackSelector::UserCreateOutputObjects()
 
   fTracksMapName = fTracksOutName;
   fTracksMapName += "_Map";
-  fTracksMap = new TH1I(fTracksMapName, fTracksMapName, 1000, 0, 1);
+  fTracksMap = new AliNamedArrayI(fTracksMapName, 9999);
 }
 
 //________________________________________________________________________
@@ -132,14 +132,14 @@ void AliEmcalMCTrackSelector::UserExec(Option_t *)
 
   // clear container (normally a null operation as the event should clean it already)
   fTracksOut->Delete();
+  fTracksMap->Clear();
 
   const Int_t Ntracks = GetNumberOfTracks();
-  new (fTracksMap) TH1I(fTracksMapName, fTracksMapName, Ntracks-2, 0, 1);  // Ntracks - 2, we use also over- and uner-flow bins
 
   // loop over tracks
   for (Int_t iTracks = 0, nacc = 0; iTracks < Ntracks; ++iTracks) {
 
-    fTracksMap->SetBinContent(iTracks, 0);
+    fTracksMap->AddAt(-1, iTracks);
 
     AliVParticle* track = GetTrack(iTracks);
 
@@ -154,7 +154,7 @@ void AliEmcalMCTrackSelector::UserExec(Option_t *)
     
     if (fChargedMC && track->Charge() == 0) continue;
 
-    fTracksMap->SetBinContent(iTracks, nacc);
+    fTracksMap->AddAt(nacc, iTracks);
 
     AddTrack(track, nacc);
 
index 427e604a0dd7d4a98c4eec19c9b61237efaa1a14..59db5e6cab8bdd28f02e74dcc8c52c620f8598ae 100644 (file)
@@ -6,6 +6,7 @@
 class TClonesArray;
 class TString;
 class TH1I;
+class AliNamedArrayI;
 
 #include "AliAnalysisTaskSE.h"
 
@@ -35,7 +36,7 @@ class AliEmcalMCTrackSelector : public AliAnalysisTaskSE {
   Bool_t             fEsdMode;              //!switch for ESD/AOD mode
   TClonesArray      *fTracksIn;             //!track array in (AOD only)
   TClonesArray      *fTracksOut;            //!track array out
-  TH1I              *fTracksMap;            //!track mapping
+  AliNamedArrayI    *fTracksMap;            //!track mapping
 
  private:
   AliEmcalMCTrackSelector(const AliEmcalMCTrackSelector&);            // not implemented
index 874fec2c3ec9a3892a73411b2f20a12968e6759d..8266e2246d2f924b724a106ac91fdbd676d2cdea 100644 (file)
@@ -197,7 +197,7 @@ void AliEmcalPicoTrackMaker::UserExec(Option_t *)
        label = TMath::Abs(track->GetLabel());
 
       if (label == 0) {
-       AliWarning(Form("Track %d with label==0", iTracks));
+       AliDebug(2,Form("Track %d with label==0", iTracks));
        label = 99999;
       }
     }
index 472f76a539ef342706c9218fb57346368f643087..67d4446bb9f3a9d2eab13531b1beb433494f230d 100644 (file)
@@ -12,7 +12,7 @@
 //_________________________________________________________________________________________________
 AliPicoTrack::AliPicoTrack() :
   AliVTrack(),
-  fPt(0), fEta(0), fPhi(0), fQ(0), fLabel(-1), fTrackType(-1), fEtaEmc(0), fPhiEmc(0), fEmcal(0), fClusId(-1)
+  fPt(0), fEta(0), fPhi(0), fQ(0), fLabel(-1), fTrackType(0), fEtaEmc(0), fPhiEmc(0), fEmcal(0), fClusId(-1)
 {
   // Default constructor.
 }
index 3388a50a6b150f774c52ab61099a311129b6175c..1be1c039883afbaee913b6b4fe0bf55d5e1804dd 100644 (file)
@@ -38,6 +38,7 @@ class AliPicoTrack: public AliVTrack {
   Int_t    GetLabel()                  const { return fLabel;  }
   void     SetLabel(Int_t label)             { fLabel = label; }
   Byte_t   GetTrackType()              const { return fTrackType;}
+  void     SetTrackType(Byte_t type)         { fTrackType = type;}
   Int_t    PdgCode()                   const { return 0;       }
   const Double_t *PID()                const { return 0;       }
   Int_t    GetID()                     const { return 0;       }
index c274a934a833d4c632345c9053d87460cbf746f0..17cb55830c3b0fea3b44a98e800930202bac7269 100644 (file)
@@ -401,16 +401,17 @@ Bool_t AliAnalysisTaskDeltaPt::FillHistograms()
     Int_t countEmbJets = 0;
     
     while (embJet != 0) {
+      AliDebug(2,Form("Elaborating embedded jet n. %d", countEmbJets));
+      countEmbJets++;
+
       if (!AcceptJet(embJet)) {
+       AliDebug(2,"Embedded jet not accepted, skipping...");
        fHistEmbRejectedJetsPhiEta[fCentBin]->Fill(embJet->Eta(), embJet->Phi());
        fHistEmbRejectedJetsPtArea[fCentBin]->Fill(embJet->Area(), embJet->Pt());
        
        embJet = NextEmbeddedJet();
        continue;
       }
-
-      AliDebug(2,Form("Elaborating embedded jet n. %d", countEmbJets));
-      countEmbJets++;
       
       Double_t maxClusterPt = 0;
       Double_t maxClusterEta = 0;
index f9ab0e053fc85bc4088aab7316e32cf7e4996127..86f0c35d078833aadbe9766a5e653afd2f10ecf4 100644 (file)
@@ -184,10 +184,14 @@ void AliEmcalJetTask::FindJets()
       if (!t)
         continue;
       if (fIsMcPart) {
-       if (((fJetType & kChargedJet) != 0) && (t->Charge() == 0))
+       if (((fJetType & kChargedJet) != 0) && (t->Charge() == 0)) {
+         AliDebug(2,Form("Skipping track %d because it is neutral.", iTracks));
          continue;
-       if (((fJetType & kNeutralJet) != 0) && (t->Charge() != 0))
+       }
+       if (((fJetType & kNeutralJet) != 0) && (t->Charge() != 0)) {
+         AliDebug(2,Form("Skipping track %d because it is charged.", iTracks));
          continue;
+       }
       }
       if (fIsMcPart || t->GetLabel() != 0) {
        if (fMCConstSel == kNone) {
@@ -395,7 +399,7 @@ void AliEmcalJetTask::FindJets()
 
     for(UInt_t ic = 0; ic < constituents.size(); ++ic) {
       Int_t uid = constituents[ic].user_index();
-      AliDebug(2,Form("Processing constituent %d", uid));
+      AliDebug(3,Form("Processing constituent %d", uid));
       if ((uid == -1) /*&& (constituents[ic].kt2() < 1e-25)*/) { //ghost particle
         ++gall;
         Double_t gphi = constituents[ic].phi();
@@ -588,7 +592,7 @@ Bool_t AliEmcalJetTask::DoInit()
   }
   if (fTracks) {
     TClass cls(fTracks->GetClass()->GetName());
-    if (cls.InheritsFrom("AliMCParticle"))
+    if (cls.InheritsFrom("AliMCParticle") || cls.InheritsFrom("AliAODMCParticle"))
       fIsMcPart = 1;
   }
   
index 1d698177e546eedbca50bb821f0888a83bcab564..a34b999a42ef62ddb85ed45cbf200611f672fa19 100644 (file)
@@ -7,9 +7,9 @@
 #include "AliJetConstituentTagCopier.h"
 
 #include <TClonesArray.h>
-#include <TH1I.h>
 #include <TMath.h>
 
+#include "AliNamedArrayI.h"
 #include "AliVCluster.h"
 #include "AliVParticle.h"
 #include "AliEmcalParticle.h"
@@ -62,14 +62,14 @@ void AliJetConstituentTagCopier::ExecOnce()
   }
 
   if (!fMCParticlesMap) {
-    fMCParticlesMap = dynamic_cast<TH1I*>(InputEvent()->FindListObject(fMCParticlesName + "_Map"));
+    fMCParticlesMap = dynamic_cast<AliNamedArrayI*>(InputEvent()->FindListObject(fMCParticlesName + "_Map"));
     // this is needed to map the MC labels with the indexes of the MC particle collection
       // if teh map is not given, the MC labels are assumed to be consistent with the indexes (which is not the case if AliEmcalMCTrackSelector is used)
     if (!fMCParticlesMap) {
       AliWarning(Form("%s: Could not retrieve map for MC particles %s! Will assume MC labels consistent with indexes...", GetName(), fMCParticlesName.Data())); 
-      fMCParticlesMap = new TH1I("tracksMap","tracksMap",9999,0,1);
+      fMCParticlesMap = new AliNamedArrayI("tracksMap",9999);
       for (Int_t i = 0; i < 9999; i++) {
-       fMCParticlesMap->SetBinContent(i,i);
+       fMCParticlesMap->AddAt(i,i);
       }
     }
   }
@@ -114,7 +114,9 @@ void AliJetConstituentTagCopier::DoClusterLoop(TClonesArray *array)
       continue;
     Int_t mcLabel = cluster->GetLabel();
     if (mcLabel > 0) {
-      Int_t index = fMCParticlesMap->At(mcLabel);
+      Int_t index = -1;
+      if (mcLabel < fMCParticlesMap->GetSize())
+       index = fMCParticlesMap->At(mcLabel);
       if (index < 0)
        continue;
       AliVParticle *part = static_cast<AliVParticle*>(fMCParticles->At(index));
@@ -141,7 +143,9 @@ void AliJetConstituentTagCopier::DoTrackLoop(TClonesArray *array)
       continue;
     Int_t mcLabel = TMath::Abs(track->GetLabel());
     if (mcLabel != 0) {
-      Int_t index = fMCParticlesMap->At(mcLabel);
+      Int_t index = -1;
+      if (mcLabel < fMCParticlesMap->GetSize())
+       index = fMCParticlesMap->At(mcLabel);
       if (index < 0)
        continue;
       AliVParticle *part = static_cast<AliVParticle*>(fMCParticles->At(index));
@@ -176,7 +180,9 @@ void AliJetConstituentTagCopier::DoEmcalParticleLoop(TClonesArray *array)
     else if (track)
       mcLabel = TMath::Abs(track->GetLabel());
     if (mcLabel != 0) {
-      Int_t index = fMCParticlesMap->At(mcLabel);
+      Int_t index = -1;
+      if (mcLabel < fMCParticlesMap->GetSize())
+       index = fMCParticlesMap->At(mcLabel);
       if (index < 0)
        continue;
       AliVParticle *part = static_cast<AliVParticle*>(fMCParticles->At(index));
index 03a11e49f266a02ba974f4c6664c84bb44631c33..cc78d9754ce4353f5e54450e866f00a3aeca4f09 100644 (file)
@@ -7,6 +7,7 @@
 
 class TClonesArray;
 class TString;
+class AliNamedArrayI;
 
 class AliJetConstituentTagCopier : public AliAnalysisTaskEmcal {
  public:
@@ -25,7 +26,7 @@ class AliJetConstituentTagCopier : public AliAnalysisTaskEmcal {
 
   TString                     fMCParticlesName;                       // name of MC particle collection
   TClonesArray               *fMCParticles;                           //!MC particle collection
-  TH1I                       *fMCParticlesMap;                        //!MC particle map
+  AliNamedArrayI             *fMCParticlesMap;                        //!MC particle map
 
  private:
   AliJetConstituentTagCopier(const AliJetConstituentTagCopier&);            // not implemented
index 52b3c3878168ff487c3804d223007215ce42d959..bd21277edeb57098da47641b44ec0edd0b319c73 100644 (file)
@@ -78,6 +78,12 @@ AliJetEmbeddingFromAODTask::AliJetEmbeddingFromAODTask() :
   SetMarkMC(0);
   fAODfilterBits[0] = -1;
   fAODfilterBits[1] = -1;
+  fEtaMin = -1;
+  fEtaMax = 1;
+  fPhiMin = -10;
+  fPhiMax = 10;
+  fPtMin = 0;
+  fPtMax = 1000;
 }
 
 //________________________________________________________________________
@@ -124,6 +130,12 @@ AliJetEmbeddingFromAODTask::AliJetEmbeddingFromAODTask(const char *name, Bool_t
   SetMarkMC(0);
   fAODfilterBits[0] = -1;
   fAODfilterBits[1] = -1;
+  fEtaMin = -1;
+  fEtaMax = 1;
+  fPhiMin = -10;
+  fPhiMax = 10;
+  fPtMin = 0;
+  fPtMax = 1000;
 }
 
 //________________________________________________________________________
@@ -369,6 +381,7 @@ void AliJetEmbeddingFromAODTask::Run()
       CopyMCParticles();
 
     if (fAODMCParticles) {
+      AliDebug(2, Form("%d MC particles will be processed for embedding.", fAODMCParticles->GetEntriesFast()));
       for (Int_t i = 0; i < fAODMCParticles->GetEntriesFast(); i++) {
        AliAODMCParticle *part = static_cast<AliAODMCParticle*>(fAODMCParticles->At(i));
        if (!part) {
@@ -376,11 +389,18 @@ void AliJetEmbeddingFromAODTask::Run()
          continue;
        }
        
+       AliDebug(3, Form("Processing MC particle %d with pT = %f, eta = %f, phi = %f", i, part->Pt(), part->Eta(), part->Phi()));
+       
        if (!part->IsPhysicalPrimary()) 
          continue;
 
-       AliDebug(3, Form("Embedding MC particle with pT = %f, eta = %f, phi = %f", part->Pt(), part->Eta(), part->Phi()));
+       if (part->Pt() < fPtMin || part->Pt() > fPtMax ||
+           part->Eta() < fEtaMin || part->Eta() > fEtaMax ||
+           part->Phi() < fPhiMin || part->Phi() > fPhiMax)
+         continue;
+       
        AddMCParticle(part, i);
+       AliDebug(3, "Embedded!");
       }
     }
   }
@@ -390,6 +410,8 @@ void AliJetEmbeddingFromAODTask::Run()
     if (fCopyArray && fTracks)
       CopyTracks();
 
+    AliDebug(2, Form("Start embedding with %d tracks.", fOutTracks->GetEntriesFast()));
+
     if (fAODTracks) {
       AliDebug(2, Form("%d tracks will be processed for embedding.", fAODTracks->GetEntriesFast()));
       for (Int_t i = 0; i < fAODTracks->GetEntriesFast(); i++) {
@@ -399,6 +421,8 @@ void AliJetEmbeddingFromAODTask::Run()
          continue;
        }
        
+       AliDebug(3, Form("Processing track %d with pT = %f, eta = %f, phi = %f, label = %d", i, track->Pt(), track->Eta(), track->Phi(), track->GetLabel()));
+       
        Int_t type = 0;
        Bool_t isEmc = kFALSE;
        if (!fEsdTreeMode) {
@@ -410,14 +434,17 @@ void AliJetEmbeddingFromAODTask::Run()
            if ((aodtrack->GetStatus()&AliESDtrack::kITSrefit)==0) {
              if (fIncludeNoITS)
                type = 2;
-             else
+             else {
+               AliDebug(3, "Track not embedded because ITS refit failed.");
                continue;
            }
+           }
            else {
              type = 1;
            }
          }
          else { /*not a good track*/
+           AliDebug(3, "Track not embedded because not an hybrid track.");
            continue;
          }
 
@@ -437,11 +464,20 @@ void AliJetEmbeddingFromAODTask::Run()
          }
        }
        
+       if (track->Pt() < fPtMin || track->Pt() > fPtMax ||
+           track->Eta() < fEtaMin || track->Eta() > fEtaMax ||
+           track->Phi() < fPhiMin || track->Phi() > fPhiMax) {
+         AliDebug(3, "Track not embedded because out of limits.");
+         continue;
+       }
+       
        if (fTrackEfficiency < 1) {
          Double_t r = gRandom->Rndm();
-         if (fTrackEfficiency < r) 
+         if (fTrackEfficiency < r) {
+           AliDebug(3, "Track not embedded because of artificial inefiiciency.");
            continue;
        }
+       }
        
        Int_t label = 0;
        if (fIsMC) {
@@ -451,13 +487,13 @@ void AliJetEmbeddingFromAODTask::Run()
            label = TMath::Abs(track->GetLabel());
          
          if (label == 0) {
-           AliWarning(Form("%s: Track %d with label==0", GetName(), i));
+           AliDebug(2,Form("%s: Track %d with label==0", GetName(), i));
            label = 99999;
          }
        }
 
-       AliDebug(3, Form("Embedding track with pT = %f, eta = %f, phi = %f, label = %d", track->Pt(), track->Eta(), track->Phi(), label));
        AddTrack(track->Pt(), track->Eta(), track->Phi(), type, track->GetTrackEtaOnEMCal(), track->GetTrackPhiOnEMCal(), isEmc, label);
+       AliDebug(3, "Track embedded!");
       }
     }
   }
@@ -477,6 +513,12 @@ void AliJetEmbeddingFromAODTask::Run()
        TLorentzVector vect;
        Double_t vert[3] = {0,0,0};
        clus->GetMomentum(vect,vert);
+
+       if (vect.Pt() < fPtMin || vect.Pt() > fPtMax ||
+           vect.Eta() < fEtaMin || vect.Eta() > fEtaMax ||
+           vect.Phi() < fPhiMin || vect.Phi() > fPhiMax)
+         continue;
+
        AddCluster(clus->E(), vect.Eta(), vect.Phi(), clus->GetLabel());
       }
     }
index 69eb4baf26552a0dfeadd726550e0214b63d6860..373ecd4d8520c88a9bd38276d339509ec5d2db4f 100644 (file)
@@ -12,7 +12,7 @@
 #include <TRandom.h>
 #include <TParameter.h>
 #include <TSystem.h>
-#include <TH1F.h>
+#include <TH1I.h>
 
 #include "AliVEvent.h"
 #include "AliLog.h"
@@ -183,9 +183,11 @@ TString AliJetEmbeddingFromPYTHIATask::GetNextFileName()
   TString fileName(fPYTHIAPath);
   if (!fileName.EndsWith("/"))
     fileName += "/";
-  
-  fileName += fAnchorRun;
-  fileName += "/";
+
+  if (fAnchorRun > 0) {
+    fileName += fAnchorRun;
+    fileName += "/";
+  }
   fileName += fCurrentPtHardBin;
   fileName += "/";
   if (fCurrentAODFileID < 10)
index e59ac254ec762697494ea1adb2c02bf3c48c5d64..647fd2281d618db6fc5fac588d13e897ebaddc39 100644 (file)
@@ -10,6 +10,7 @@ template<class T>
 class TParameter;
 
 class TString;
+class TH1;
 
 class AliJetEmbeddingFromPYTHIATask : public AliJetEmbeddingFromAODTask {
  public:
index 8edc28e9e2d539d0bcb4b4eb6437e2ef09601aa2..84599f54da0aba6feba9e215e9ea2e0916d58e7b 100644 (file)
@@ -25,6 +25,7 @@
 #include "AliPicoTrack.h"
 #include "AliEMCALGeometry.h"
 #include "AliLog.h"
+#include "AliNamedArrayI.h"
 
 ClassImp(AliJetModelBaseTask)
 
@@ -164,11 +165,9 @@ void AliJetModelBaseTask::UserExec(Option_t *)
       fOutMCParticles->Delete();
   }
   
-  // Reset name (it is cleared each event by the analysis manager)
-  if (fOutMCParticlesMap) {
-    new (fOutMCParticlesMap) TH1I(fOutMCParticlesName + "_Map", fOutMCParticlesName + "_Map",9999,0,1);
-    fOutMCParticlesMap->TArrayI::Reset(-1);
-  }
+  // Clear map
+  if (fOutMCParticlesMap)
+  fOutMCParticlesMap->Clear();
 
   AliVCaloCells *tempCaloCells = 0;
 
@@ -325,13 +324,13 @@ Bool_t AliJetModelBaseTask::ExecOnce()
        return kFALSE;
       }
       
-      fMCParticlesMap = dynamic_cast<TH1I*>(InputEvent()->FindListObject(fMCParticlesName + "_Map"));
+      fMCParticlesMap = dynamic_cast<AliNamedArrayI*>(InputEvent()->FindListObject(fMCParticlesName + "_Map"));
 
       if (!fMCParticlesMap) {
        AliWarning(Form("%s: Could not retrieve map for MC particles %s! Will assume MC labels consistent with indexes...", GetName(), fMCParticlesName.Data())); 
-       fMCParticlesMap = new TH1I(fMCParticlesName + "_Map", fMCParticlesName + "_Map",9999,0,1);
+       fMCParticlesMap = new AliNamedArrayI(fMCParticlesName + "_Map", 9999);
        for (Int_t i = 0; i < 9999; i++) {
-         fMCParticlesMap->SetBinContent(i,i);
+         fMCParticlesMap->AddAt(i,i);
        }
       }
     }
@@ -352,7 +351,7 @@ Bool_t AliJetModelBaseTask::ExecOnce()
          InputEvent()->AddObject(fOutMCParticles);
        }
 
-       fOutMCParticlesMap = new TH1I(fOutMCParticlesName + "_Map", fOutMCParticlesName + "_Map",9999,0,1);
+       fOutMCParticlesMap = new AliNamedArrayI(fOutMCParticlesName + "_Map",9999);
        if (InputEvent()->FindListObject(fOutMCParticlesName + "_Map")) {
          AliFatal(Form("%s: Map %s_Map is already present in the event!", GetName(), fOutMCParticlesName.Data())); 
          return kFALSE;
@@ -618,7 +617,7 @@ AliAODMCParticle* AliJetModelBaseTask::AddMCParticle(AliAODMCParticle *part, Int
 
   AliAODMCParticle *aodpart = new ((*fOutMCParticles)[nPart]) AliAODMCParticle(*part);
 
-  fOutMCParticlesMap->SetBinContent(origIndex + fMCLabelShift, nPart);
+  fOutMCParticlesMap->AddAt(nPart, origIndex + fMCLabelShift);
   AliDebug(2, Form("Setting bin %d to %d (fMCLabelShift=%d, origIndex=%d)", 
                   origIndex + fMCLabelShift, fOutMCParticlesMap->At(origIndex + fMCLabelShift), fMCLabelShift, origIndex));
 
@@ -696,9 +695,9 @@ void AliJetModelBaseTask::CopyMCParticles()
   if (!fMCParticlesMap)
     return;
 
-  for (Int_t i = 0; i < fMCParticlesMap->GetNbinsX()+2; i++) {
-    fOutMCParticlesMap->SetBinContent(i, fMCParticlesMap->GetBinContent(i));
-    if (fMCParticlesMap->GetBinContent(i) != 0)
+  for (Int_t i = 0; i < fMCParticlesMap->GetSize(); i++) {
+    fOutMCParticlesMap->AddAt(fMCParticlesMap->At(i), i);
+    if (fMCParticlesMap->At(i) >= 0)
       fMCLabelShift = i;
   }
 
index 3bf79737643c358575e8da7b5b15f06cea9254ba..f00315beaf2851ea008e4ee62fb3ad8a76c524c2 100644 (file)
@@ -10,6 +10,7 @@ class AliVCluster;
 class AliPicoTrack;
 class AliVCaloCells;
 class AliAODMCParticle;
+class AliNamedArrayI;
 
 #include <TH1F.h>
 #include <TF1.h>
@@ -99,9 +100,9 @@ class AliJetModelBaseTask : public AliAnalysisTaskSE {
   AliVCaloCells         *fOutCaloCells;           //!output cells collection
   Int_t                  fAddedCells;             //!number of added cells
   TClonesArray          *fMCParticles;            //!MC particles collection
-  TH1I                  *fMCParticlesMap;          //!MC particles mapping
+  AliNamedArrayI        *fMCParticlesMap;         //!MC particles mapping
   TClonesArray          *fOutMCParticles;         //!output MC particles collection
-  TH1I                  *fOutMCParticlesMap;      //!MC particles mapping
+  AliNamedArrayI        *fOutMCParticlesMap;      //!MC particles mapping
   Int_t                  fMCLabelShift;           //!MC label shift
   Bool_t                 fEsdMode;                //!ESD/AOD mode
   TList                 *fOutput;                 //!output list for QA histograms
index a85c2873ab0a7f9bdd7e3a8b5ad69f79e5f740d7..3a9f68efb22f5b1fdcbcb4cf78b33e54e3d9b3d9 100644 (file)
@@ -24,6 +24,7 @@
 #include "AliMCEvent.h"
 #include "AliLog.h"
 #include "AliRhoParameter.h"
+#include "AliNamedArrayI.h"
 
 ClassImp(AliJetResponseMaker)
 
@@ -687,14 +688,14 @@ void AliJetResponseMaker::ExecOnce()
     }
 
     if (fAreCollections2MC) {
-      fTracks2Map = dynamic_cast<TH1*>(InputEvent()->FindListObject(fTracks2Name + "_Map"));
+      fTracks2Map = dynamic_cast<AliNamedArrayI*>(InputEvent()->FindListObject(fTracks2Name + "_Map"));
       // this is needed to map the MC labels with the indexes of the MC particle collection
       // if teh map is not given, the MC labels are assumed to be consistent with the indexes (which is not the case if AliEmcalMCTrackSelector is used)
       if (!fTracks2Map) {
        AliWarning(Form("%s: Could not retrieve map for tracks2 %s! Will assume MC labels consistent with indexes...", GetName(), fTracks2Name.Data())); 
-       fTracks2Map = new TH1I("tracksMap","tracksMap",9999,0,1);
+       fTracks2Map = new AliNamedArrayI("tracksMap",9999);
        for (Int_t i = 0; i < 9999; i++) {
-         fTracks2Map->SetBinContent(i,i);
+         fTracks2Map->AddAt(i,i);
        }
       }
     }
@@ -922,8 +923,8 @@ void AliJetResponseMaker::GetMCLabelMatchingLevel(AliEmcalJet *jet1, AliEmcalJet
        d1 -= track->Pt();
        continue;
       }
-      else if (MClabel < fTracks2Map->GetNbinsX()-2) {
-       index = fTracks2Map->GetBinContent(MClabel);
+      else if (MClabel < fTracks2Map->GetSize()) {
+       index = fTracks2Map->At(MClabel);
       }
          
       if (index < 0) {
@@ -964,8 +965,8 @@ void AliJetResponseMaker::GetMCLabelMatchingLevel(AliEmcalJet *jet1, AliEmcalJet
            d1 -= part.Pt() * cellFrac;
            continue;
          }
-         else if (MClabel < fTracks2Map->GetNbinsX()-2) {
-           index = fTracks2Map->GetBinContent(MClabel);
+         else if (MClabel < fTracks2Map->GetSize()) {
+           index = fTracks2Map->At(MClabel);
          }
 
          if (index < 0) {
@@ -995,8 +996,8 @@ void AliJetResponseMaker::GetMCLabelMatchingLevel(AliEmcalJet *jet1, AliEmcalJet
          d1 -= part.Pt();
          continue;
        }
-       else if (MClabel < fTracks2Map->GetNbinsX()-2) {
-         index = fTracks2Map->GetBinContent(MClabel);
+       else if (MClabel < fTracks2Map->GetSize()) {
+         index = fTracks2Map->At(MClabel);
        }
         
        if (index < 0) {
index cd44a67fef3dce5d6652c1d2fac394d8c6ed67dc..a50756849e89a5f1311356b815e9cf2f648d641c 100644 (file)
@@ -7,6 +7,7 @@ class AliGenPythiaEventHeader;
 class TClonesArray;
 class TH1;
 class TH2;
+class AliNamedArrayI;
 
 #include "AliEmcalJet.h"
 #include "AliAnalysisTaskEmcalJet.h"
@@ -80,7 +81,7 @@ class AliJetResponseMaker : public AliAnalysisTaskEmcalJet {
   TClonesArray               *fJets2;                         //!Jets 2
   AliRhoParameter            *fRho2;                          //!Event rho 2
   Double_t                    fRho2Val;                       //!Event rho 2 value 
-  TH1                        *fTracks2Map;                    //!MC particle map
+  AliNamedArrayI             *fTracks2Map;                    //!MC particle map
   // General histograms
   TH1                        *fHistTrialsAfterSel;            //!total number of trials per pt hard bin after selection
   TH1                        *fHistEventsAfterSel;            //!total number of events per pt hard bin after selection
index ddc082e9f226424b32ab1922d0ede22d399887bf..a11658040e32aa94016c7e108416560aef289715 100644 (file)
@@ -129,24 +129,36 @@ void AliAnalysisTaskSAJF::UserCreateOutputObjects()
 
     histname = "fHistLeadingJetPhiEta_";
     histname += i;
-    fHistLeadingJetPhiEta[i] = new TH2F(histname.Data(), histname.Data(), 50,-1, 1, 101, 0, TMath::Pi() * 2.02);
+    fHistLeadingJetPhiEta[i] = new TH3F(histname.Data(), histname.Data(), 
+                                50, binsEta, 
+                                101, binsPhi, 
+                                nbinsZ, binsZ);
     fHistLeadingJetPhiEta[i]->GetXaxis()->SetTitle("#eta");
     fHistLeadingJetPhiEta[i]->GetYaxis()->SetTitle("#phi");
+    fHistLeadingJetPhiEta[i]->GetZaxis()->SetTitle("p_{T,lead} (GeV/c)");
     fOutput->Add(fHistLeadingJetPhiEta[i]);
 
     histname = "fHistLeadingJetPtArea_";
     histname += i;
-    fHistLeadingJetPtArea[i] = new TH2F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt, 30, 0, fJetRadius * fJetRadius * TMath::Pi() * 3);
+    fHistLeadingJetPtArea[i] = new TH3F(histname.Data(), histname.Data(), 
+                                       fNbins, binsPt, 
+                                       30, binsArea,
+                                       nbinsZ, binsZ);
     fHistLeadingJetPtArea[i]->GetXaxis()->SetTitle("p_{T}^{raw} (GeV/c)");
     fHistLeadingJetPtArea[i]->GetYaxis()->SetTitle("area");
+    fHistLeadingJetPtArea[i]->GetZaxis()->SetTitle("p_{T,lead} (GeV/c)");
     fOutput->Add(fHistLeadingJetPtArea[i]);
 
     if (!fRhoName.IsNull()) {
       histname = "fHistLeadingJetCorrPtArea_";
       histname += i;
-      fHistLeadingJetCorrPtArea[i] = new TH2F(histname.Data(), histname.Data(), fNbins * 2, -fMaxBinPt, fMaxBinPt, 30, 0, fJetRadius * fJetRadius * TMath::Pi() * 3);
+      fHistLeadingJetCorrPtArea[i] = new TH3F(histname.Data(), histname.Data(), 
+                                             fNbins * 2, binsCorrPt, 
+                                             30, binsArea,
+                                             nbinsZ, binsZ);
       fHistLeadingJetCorrPtArea[i]->GetXaxis()->SetTitle("p_{T}^{corr} (GeV/c)");
       fHistLeadingJetCorrPtArea[i]->GetYaxis()->SetTitle("area");
+      fHistLeadingJetCorrPtArea[i]->GetZaxis()->SetTitle("p_{T,lead} (GeV/c)");
       fOutput->Add(fHistLeadingJetCorrPtArea[i]);
       
       histname = "fHistRhoVSleadJetPt_";
@@ -221,6 +233,7 @@ void AliAnalysisTaskSAJF::UserCreateOutputObjects()
                                        nbinsZ, binsZ);
       fHistJetsCorrPtArea[i]->GetXaxis()->SetTitle("p_{T}^{corr} [GeV/c]");
       fHistJetsCorrPtArea[i]->GetYaxis()->SetTitle("area");
+      fHistJetsCorrPtArea[i]->GetZaxis()->SetTitle("p_{T,lead} (GeV/c)");
       fOutput->Add(fHistJetsCorrPtArea[i]);
     }
 
@@ -326,13 +339,15 @@ Bool_t AliAnalysisTaskSAJF::FillHistograms()
     if (!AcceptJet(jet))
       continue;
 
-    fHistLeadingJetPhiEta[fCentBin]->Fill(jet->Eta(), jet->Phi());
-    fHistLeadingJetPtArea[fCentBin]->Fill(jet->Pt(), jet->Area());
+    Float_t ptLeading = GetLeadingHadronPt(jet);
+
+    fHistLeadingJetPhiEta[fCentBin]->Fill(jet->Eta(), jet->Phi(), ptLeading);
+    fHistLeadingJetPtArea[fCentBin]->Fill(jet->Pt(), jet->Area(), ptLeading);
 
     Float_t corrPt = jet->Pt() - fRhoVal * jet->Area();
 
     if (fHistLeadingJetCorrPtArea[fCentBin])
-      fHistLeadingJetCorrPtArea[fCentBin]->Fill(corrPt, jet->Area());
+      fHistLeadingJetCorrPtArea[fCentBin]->Fill(corrPt, jet->Area(), ptLeading);
 
     if (i==0 && fHistRhoVSleadJetPt[fCentBin]) 
       fHistRhoVSleadJetPt[fCentBin]->Fill(fRhoVal, jet->Pt());
index 3d132c146b2193f6b5be007448d1ff71bfba4c1b..de689de8fdf47980e7c608feb4b103808216bf44 100644 (file)
@@ -28,9 +28,9 @@ class AliAnalysisTaskSAJF : public AliAnalysisTaskEmcalJet {
 
   // General histograms
   TH1F                       *fHistEvents[4];              //!Events accepted/rejected
-  TH2F                       *fHistLeadingJetPhiEta[4];    //!Leading jet phi-eta
-  TH2F                       *fHistLeadingJetPtArea[4];    //!Leading jet pt spectrum vs. area
-  TH2F                       *fHistLeadingJetCorrPtArea[4];//!Corrected leading jet pt spectrum vs. area
+  TH3F                       *fHistLeadingJetPhiEta[4];    //!Leading jet phi-eta
+  TH3F                       *fHistLeadingJetPtArea[4];    //!Leading jet pt spectrum vs. area
+  TH3F                       *fHistLeadingJetCorrPtArea[4];//!Corrected leading jet pt spectrum vs. area
   TH2F                       *fHistRhoVSleadJetPt[4];      //!Area(leadjet) * rho vs. leading jet pt
   TH2F                       *fNjetsVsCent;                //!No. of jets vs. centrality
 
index 156c5fb6a113dc4b0b0c766170b55a24ce2da6f2..611bee2673187002e0cec27c89604873dff0a94d 100644 (file)
@@ -4,7 +4,6 @@
 //
 // Author: S.Aiola
 
-#include <TChain.h>
 #include <TClonesArray.h>
 #include <TH1F.h>
 #include <TH2F.h>
@@ -36,6 +35,7 @@ AliAnalysisTaskSAQA::AliAnalysisTaskSAQA() :
   AliAnalysisTaskEmcalJet("AliAnalysisTaskSAQA", kTRUE),
   fCellEnergyCut(0.1),
   fParticleLevel(kFALSE),
+  fIsMC(kFALSE),
   fNclusters(0),
   fNtracks(0),
   fNjets(0),
@@ -76,6 +76,7 @@ AliAnalysisTaskSAQA::AliAnalysisTaskSAQA(const char *name) :
   AliAnalysisTaskEmcalJet(name, kTRUE),
   fCellEnergyCut(0.1),
   fParticleLevel(kFALSE),
+  fIsMC(kFALSE),
   fNclusters(0),
   fNtracks(0),
   fNjets(0),
@@ -145,7 +146,7 @@ void AliAnalysisTaskSAQA::UserCreateOutputObjects()
        fHistTrPhiEtaPt[i][j]->GetZaxis()->SetTitle("p_{T} (GeV/c)");
        fOutput->Add(fHistTrPhiEtaPt[i][j]);
       }
-      if (!fParticleLevel) {
+      if (!fParticleLevel && fIsMC) {
        histname = Form("fHistTrPhiEtaPtNegLab_%d",i);
        fHistTrPhiEtaPtNegLab[i] = new TH3F(histname,histname, 100, -1, 1, 201, 0, TMath::Pi() * 2.01, fNbins, fMinBinPt, fMaxBinPt);
        fHistTrPhiEtaPtNegLab[i]->GetXaxis()->SetTitle("#eta");
@@ -309,7 +310,7 @@ Bool_t AliAnalysisTaskSAQA::FillHistograms()
 
   if (fTracks) {
     trackSum = DoTrackLoop();
-
+    AliDebug(2,Form("%d tracks found in the event", fTracks->GetEntriesFast()));
     fHistTracksCent->Fill(fCent, fNtracks);
   } 
 
@@ -495,9 +496,7 @@ Float_t AliAnalysisTaskSAQA::DoTrackLoop()
       continue; 
     }
 
-    AliVTrack* vtrack = dynamic_cast<AliVTrack*>(track); 
-    
-    if (vtrack && !AcceptTrack(vtrack)) 
+    if (!AcceptTrack(track)) 
       continue;
 
     fNtracks++;
@@ -509,7 +508,7 @@ Float_t AliAnalysisTaskSAQA::DoTrackLoop()
     }
     else {
       fHistTrPhiEtaPt[fCentBin][3]->Fill(track->Eta(), track->Phi(), track->Pt());
-      if (fHistTrPhiEtaPtNegLab[fCentBin] && track->GetLabel() < 0)
+      if (fHistTrPhiEtaPtNegLab[fCentBin] && track->GetLabel() <= 0)
        fHistTrPhiEtaPtNegLab[fCentBin]->Fill(track->Eta(), track->Phi(), track->Pt());
 
       Int_t type = 0;
@@ -521,9 +520,11 @@ Float_t AliAnalysisTaskSAQA::DoTrackLoop()
       if (type >= 0 && type < 3)
        fHistTrPhiEtaPt[fCentBin][type]->Fill(track->Eta(), track->Phi(), track->Pt());
       else
-       AliWarning(Form("%s: track type %d not recognized!", GetName(), type));
+       AliDebug(2,Form("%s: track type %d not recognized!", GetName(), type));
     }
 
+    AliVTrack* vtrack = dynamic_cast<AliVTrack*>(track); 
+
     if (!vtrack)
       continue;
 
index 72ce435c3902e8e0a38b2638e4e6579cca4bea6e..e30f7dc0f47ad34d857b16b1046535a995d003cb 100644 (file)
@@ -22,6 +22,7 @@ class AliAnalysisTaskSAQA : public AliAnalysisTaskEmcalJet {
 
   void                        SetCellEnergyCut(Float_t cut)                        { fCellEnergyCut      = cut        ; }
   void                        SetParticleLevel(Bool_t s)                           { fParticleLevel      = s          ; }
+  void                        SetMC(Bool_t m)                                      { fIsMC               = m          ; }
 
  protected:
 
@@ -35,6 +36,7 @@ class AliAnalysisTaskSAQA : public AliAnalysisTaskEmcalJet {
 
   Float_t                     fCellEnergyCut;            // Energy cell cut
   Bool_t                      fParticleLevel;            // Set particle level analysis
+  Bool_t                      fIsMC;                     // Trigger, MC analysis
   Int_t                       fNclusters;                //!Number of accepted clusters in the event
   Int_t                       fNtracks;                  //!Number of accepted tracks in the event
   Int_t                       fNjets;                    //!Number of accepted jets in the event
@@ -78,6 +80,6 @@ class AliAnalysisTaskSAQA : public AliAnalysisTaskEmcalJet {
   AliAnalysisTaskSAQA(const AliAnalysisTaskSAQA&);            // not implemented
   AliAnalysisTaskSAQA &operator=(const AliAnalysisTaskSAQA&); // not implemented
 
-  ClassDef(AliAnalysisTaskSAQA, 17) // Quality task for Emcal analysis
+  ClassDef(AliAnalysisTaskSAQA, 18) // Quality task for Emcal analysis
 };
 #endif