]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
added qa task
authorloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 1 May 2012 08:14:09 +0000 (08:14 +0000)
committerloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 1 May 2012 08:14:09 +0000 (08:14 +0000)
PWGGA/CMakelibPWGGAEMCALTasks.pkg
PWGGA/EMCALTasks/AliEmcalQATask.cxx [new file with mode: 0644]
PWGGA/EMCALTasks/AliEmcalQATask.h [new file with mode: 0644]
PWGGA/PWGGAEMCALTasksLinkDef.h

index bbcb2d5234d08c271adb842fb7b374c0fbc535d5..dea58a306872f5f3c94c4aedf421d38205db64e0 100644 (file)
 set ( SRCS 
  EMCALTasks/AliAnalysisTaskEMCALClusterize.cxx 
  EMCALTasks/AliAnalysisTaskEMCALClusterizeFast.cxx
+ EMCALTasks/AliAnalysisTaskEMCALPhoton.cxx
  EMCALTasks/AliAnalysisTaskEMCALPi0CalibSelection.cxx 
  EMCALTasks/AliAnalysisTaskEMCALPi0PbPb.cxx
  EMCALTasks/AliAnalysisTaskEMCALTriggerQA.cxx
  EMCALTasks/AliAnalysisTaskESDfilterEMCALEventSelect.cxx
+ EMCALTasks/AliAnalysisTaskTrgContam.cxx
  EMCALTasks/AliEmcalClusTrackMatcherTask.cxx
  EMCALTasks/AliEmcalCompatTask.cxx
  EMCALTasks/AliEmcalEsdTpcTrackTask.cxx
+ EMCALTasks/AliEmcalIsolatedPhotonsTask.cxx
  EMCALTasks/AliEmcalJet.cxx
  EMCALTasks/AliEmcalPhysicsSelection.cxx
  EMCALTasks/AliEmcalPhysicsSelectionTask.cxx
+ EMCALTasks/AliEmcalPicoTrackMaker.cxx
+ EMCALTasks/AliEmcalQATask.cxx
  EMCALTasks/AliEmcalSetupTask.cxx
+ EMCALTasks/AliEmcalTenderTask.cxx
  EMCALTasks/AliEmcalTrackPropagatorTask.cxx
  EMCALTasks/AliEsdSkimTask.cxx
  EMCALTasks/AliEsdTrackExt.cxx
  EMCALTasks/AliPicoTrack.cxx
  EMCALTasks/AliStaObjects.cxx
- EMCALTasks/AliAnalysisTaskTrgContam.cxx
- EMCALTasks/AliAnalysisTaskEMCALPhoton.cxx
- EMCALTasks/AliEmcalIsolatedPhotonsTask.cxx
- EMCALTasks/AliEmcalPicoTrackMaker.cxx
- EMCALTasks/AliEmcalTenderTask.cxx     
 )
 
 string ( REPLACE ".cxx" ".h" HDRS "${SRCS}" )
diff --git a/PWGGA/EMCALTasks/AliEmcalQATask.cxx b/PWGGA/EMCALTasks/AliEmcalQATask.cxx
new file mode 100644 (file)
index 0000000..bc70a13
--- /dev/null
@@ -0,0 +1,456 @@
+// $Id$
+
+#include <TChain.h>
+#include <TClonesArray.h>
+#include <TH1F.h>
+#include <TH2F.h>
+#include <TList.h>
+#include <TLorentzVector.h>
+#include <TParticle.h>
+
+#include "AliAnalysisManager.h"
+#include "AliCentrality.h"
+#include "AliVCluster.h"
+#include "AliESDtrack.h"
+#include "AliEmcalJet.h"
+#include "AliAODTrack.h"
+#include "AliESDtrack.h"
+#include "AliEmcalJet.h"
+#include "AliVEventHandler.h"
+#include "AliPicoTrack.h"
+
+#include "AliEmcalQATask.h"
+
+ClassImp(AliEmcalQATask)
+
+//________________________________________________________________________
+AliEmcalQATask::AliEmcalQATask() : 
+  AliAnalysisTaskSE("AliEmcalQATask"),
+  fOutput(0),
+  fTracksName("Tracks"),
+  fCaloName("CaloClusters"),
+  fJetsName("Jets"),
+  fTrgClusName("ClustersL1GAMMAFEE"),
+  fTracks(0),
+  fCaloClusters(0),
+  fJets(0),
+  fTrgClusters(0),
+  fCent(0),
+  fHistCentrality(0),
+  fHistTracksCent(0),
+  fHistClusCent(0),
+  fHistTracksPt(0),
+  fHistClustersEnergy(0),
+  fHistEPcorrelation(0),
+  fHistJetsEnergy(0),
+  fHistTrPhiEta(0),
+  fHistClusPhiEta(0),
+  fHistJetPhiEta(0),
+  fHistMaxTrgCluster(0),
+  Ptbins(100),
+  Ptlow(0),
+  Ptup(50),
+  Ebins(100),
+  Elow(0),
+  Eup(50)
+{
+  // Default constructor.
+
+  for (Int_t i = 0; i < 5; i++) {
+    fHistTrackPhi[i] = 0;
+    fHistTrackEta[i] = 0;
+  }
+
+  fBranchNames="ESD:AliESDRun.,AliESDHeader.,PrimaryVertex.";
+
+}
+
+//________________________________________________________________________
+AliEmcalQATask::AliEmcalQATask(const char *name) : 
+  AliAnalysisTaskSE("AliEmcalQATask"),
+  fOutput(0),
+  fTracksName("Tracks"),
+  fCaloName("CaloClusters"),
+  fJetsName("Jets"),
+  fTrgClusName("ClustersL1GAMMAFEE"),
+  fTracks(0),
+  fCaloClusters(0),
+  fJets(0),
+  fTrgClusters(0),
+  fCent(0),
+  fHistCentrality(0),
+  fHistTracksCent(0),
+  fHistClusCent(0),
+  fHistTracksPt(0),
+  fHistClustersEnergy(0),
+  fHistEPcorrelation(0),
+  fHistJetsEnergy(0),
+  fHistTrPhiEta(0),
+  fHistClusPhiEta(0),
+  fHistJetPhiEta(0),
+  fHistMaxTrgCluster(0),
+  Ptbins(100),
+  Ptlow(0),
+  Ptup(50),
+  Ebins(100),
+  Elow(0),
+  Eup(50)
+{
+  // Standard constructor.
+
+  for (Int_t i = 0; i < 5; i++) {
+    fHistTrackPhi[i] = 0;
+    fHistTrackEta[i] = 0;
+  }
+
+  if (!name)
+    return;
+
+  SetName(name);
+  fBranchNames="ESD:AliESDRun.,AliESDHeader.,PrimaryVertex.";
+
+  DefineInput(0,TChain::Class());
+  DefineOutput(1,TList::Class());
+}
+
+//________________________________________________________________________
+AliEmcalQATask::~AliEmcalQATask()
+{
+  // Destructor
+}
+
+//________________________________________________________________________
+void AliEmcalQATask::UserCreateOutputObjects()
+{
+  // Create histograms
+  
+  fOutput = new TList();
+  fOutput->SetOwner();  // IMPORTANT!
+
+  fHistCentrality = new TH1F("fHistCentrality","Event centrality distribution", Ebins, 0, 100);
+  fHistCentrality->GetXaxis()->SetTitle("Centrality (%)");
+  fHistCentrality->GetYaxis()->SetTitle("counts");
+  fOutput->Add(fHistCentrality);
+
+  fHistTracksCent = new TH2F("fHistTracksCent","Tracks vs. centrality", Ebins, 0, 100, Ebins, 0, 4000);
+  fHistTracksCent->GetXaxis()->SetTitle("Centrality (%)");
+  fHistTracksCent->GetYaxis()->SetTitle("No. of tracks");
+  fOutput->Add(fHistTracksCent);
+
+  fHistClusCent = new TH2F("fHistClusCent","Clusters vs. centrality", Ebins, 0, 100, Ebins, 0, 2000);
+  fHistClusCent->GetXaxis()->SetTitle("Centrality (%)");
+  fHistClusCent->GetYaxis()->SetTitle("No. of clusters");
+  fOutput->Add(fHistClusCent);
+    
+  fHistTracksPt = new TH1F("fHistTracksPt","P_{T} spectrum of reconstructed tracks", Ptbins, Ptlow, Ptup);
+  fHistTracksPt->GetXaxis()->SetTitle("P_{T} [GeV/c]");
+  fHistTracksPt->GetYaxis()->SetTitle("counts");
+  fOutput->Add(fHistTracksPt);
+       
+  fHistClustersEnergy = new TH1F("fHistClustersEnergy","Energy spectrum of clusters", Ebins, Elow, Eup);
+  fHistClustersEnergy->GetXaxis()->SetTitle("E [GeV]");
+  fHistClustersEnergy->GetYaxis()->SetTitle("counts");
+  fOutput->Add(fHistClustersEnergy);
+
+  fHistEPcorrelation = new TH2F("fHistEPcorrelation","Energy-momentum correlation", Ptbins, Ptlow, Ptup, Ebins, Elow, Eup);
+  fHistEPcorrelation->GetXaxis()->SetTitle("P [GeV/c]");
+  fHistEPcorrelation->GetYaxis()->SetTitle("E [GeV]");
+  fOutput->Add(fHistEPcorrelation);
+  
+  fHistJetsEnergy = new TH1F("fHistJetsEnergy","Energy spectrum of jets", Ebins, Elow, Eup);
+  fHistJetsEnergy->GetXaxis()->SetTitle("E [GeV]");
+  fHistJetsEnergy->GetYaxis()->SetTitle("counts");
+  fOutput->Add(fHistJetsEnergy);
+
+  fHistTrPhiEta = new TH2F("fHistTrPhiEta","Phi-Eta distribution of tracks", 20, -2, 2, 32, 0, 6.4);
+  fHistTrPhiEta->GetXaxis()->SetTitle("Eta");
+  fHistTrPhiEta->GetYaxis()->SetTitle("Phi");
+  fOutput->Add(fHistTrPhiEta);
+
+  fHistClusPhiEta = new TH2F("fHistClusPhiEta","Phi-Eta distribution of clusters", 20, -2, 2, 32, 0, 6.4);
+  fHistClusPhiEta->GetXaxis()->SetTitle("Eta");
+  fHistClusPhiEta->GetYaxis()->SetTitle("Phi");
+  fOutput->Add(fHistClusPhiEta);
+
+  fHistJetPhiEta = new TH2F("fHistJetPhiEta","Phi-Eta distribution of jets", 20, -2, 2, 32, 0, 6.4);
+  fHistJetPhiEta->GetXaxis()->SetTitle("Eta");
+  fHistJetPhiEta->GetYaxis()->SetTitle("Phi");
+  fOutput->Add(fHistJetPhiEta);
+
+  fHistMaxTrgCluster = new TH1F("fHistMaxTrgCluster","Energy distribution of max trigger clusters", Ebins, Elow, Eup);
+  fHistMaxTrgCluster->GetXaxis()->SetTitle("E [GeV]");
+  fHistMaxTrgCluster->GetYaxis()->SetTitle("counts");
+  fOutput->Add(fHistMaxTrgCluster);
+  for (Int_t i = 0; i < 5; i++) {
+    TString histnamephi("fHistTrackPhi_");
+    histnamephi += i;
+    fHistTrackPhi[i] = new TH1F(histnamephi.Data(),histnamephi.Data(), 128, 0, 6.4);
+    fHistTrackPhi[i]->GetXaxis()->SetTitle("Phi");
+    fOutput->Add(fHistTrackPhi[i]);
+
+    TString histnameeta("fHistTrackEta_");
+    histnameeta += i;
+    fHistTrackEta[i] = new TH1F(histnameeta.Data(),histnameeta.Data(), 100, -2, 2);
+    fHistTrackEta[i]->GetXaxis()->SetTitle("Eta");
+    fOutput->Add(fHistTrackEta[i]);
+  }
+  
+  fHistTrackPhi[0]->SetLineColor(kRed);
+  fHistTrackEta[0]->SetLineColor(kRed);
+  fHistTrackPhi[1]->SetLineColor(kBlue);
+  fHistTrackEta[1]->SetLineColor(kBlue);
+  fHistTrackPhi[2]->SetLineColor(kGreen);
+  fHistTrackEta[2]->SetLineColor(kGreen);
+  fHistTrackPhi[3]->SetLineColor(kOrange);
+  fHistTrackEta[3]->SetLineColor(kOrange);
+  fHistTrackPhi[4]->SetLineColor(kBlack);
+  fHistTrackEta[4]->SetLineColor(kBlack);
+
+  PostData(1, fOutput); // Post data for ALL output slots >0 here, to get at least an empty histogram
+}
+
+void AliEmcalQATask::RetrieveEventObjects()
+{
+  fCaloClusters =  dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fCaloName));
+  if (!fCaloClusters) {
+    AliWarning(Form("Could not retrieve clusters!")); 
+  }
+
+  fTracks = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fTracksName));
+  if (!fTracks) {
+    AliWarning(Form("Could not retrieve tracks!")); 
+  }
+
+  fJets = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fJetsName));
+  if (!fJets) {
+    AliWarning(Form("Could not retrieve jets!")); 
+  }
+
+  if (strcmp(fTrgClusName,"")) {
+    fTrgClusters =  dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fTrgClusName));
+    if (!fTrgClusters) {
+      AliWarning(Form("Could not retrieve trigger clusters!")); 
+    }
+  }
+
+  fCent = InputEvent()->GetCentrality();
+}
+
+AliVTrack* AliEmcalQATask::GetTrack(const Int_t i) const
+{
+  if (fTracks)
+    return dynamic_cast<AliVTrack*>(fTracks->At(i));
+  else
+    return 0;
+}
+
+Int_t AliEmcalQATask::GetNumberOfTracks() const
+{
+  if (fTracks)
+    return fTracks->GetEntriesFast();
+  else
+    return 0;
+}
+
+AliVCluster* AliEmcalQATask::GetCaloCluster(const Int_t i) const
+{ 
+  if (fCaloClusters)
+    return dynamic_cast<AliVCluster*>(fCaloClusters->At(i));
+  else
+    return 0;
+}
+
+Int_t AliEmcalQATask::GetNumberOfCaloClusters() const
+{ 
+  if (fCaloClusters)
+    return fCaloClusters->GetEntriesFast();
+  else
+    return 0;
+}
+
+AliEmcalJet* AliEmcalQATask::GetJet(const Int_t i) const
+{
+  if (fJets)
+    return dynamic_cast<AliEmcalJet*>(fJets->At(i));
+  else
+    return 0;
+}
+
+Int_t AliEmcalQATask::GetNumberOfJets() const
+{
+  if (fJets)
+    return fJets->GetEntriesFast();
+  else
+    return 0;
+}
+
+AliVCluster* AliEmcalQATask::GetTrgCluster(const Int_t i) const
+{
+  if (fTrgClusters)
+    return dynamic_cast<AliVCluster*>(fTrgClusters->At(i));
+  else
+    return 0;
+}
+
+Int_t AliEmcalQATask::GetNumberOfTrgClusters() const
+{
+  if (fTrgClusters)
+    return fTrgClusters->GetEntriesFast();
+  else
+    return 0;
+}
+
+void AliEmcalQATask::FillHistograms()
+{
+  
+  fHistCentrality->Fill(fCent->GetCentralityPercentile("V0M"));
+  fHistTracksCent->Fill(fCent->GetCentralityPercentile("V0M"), GetNumberOfTracks());
+  fHistClusCent->Fill(fCent->GetCentralityPercentile("V0M"), GetNumberOfCaloClusters());
+
+  // Cluster loop
+  Int_t nclusters =  GetNumberOfCaloClusters();
+  //cout << nclusters << " clusters" << endl;
+  for (Int_t iClusters = 0; iClusters < nclusters; iClusters++) {
+    AliVCluster* cluster = GetCaloCluster(iClusters);
+    if (!cluster) {
+      printf("ERROR: Could not receive cluster %d\n", iClusters);
+      continue;
+    }  
+    
+    if (!(cluster->IsEMCAL())) continue;
+
+    fHistClustersEnergy->Fill(cluster->E());
+
+    Float_t pos[3];
+    cluster->GetPosition(pos);
+    TVector3 clusVec(pos);
+    fHistClusPhiEta->Fill(clusVec.Eta(), clusVec.Phi());
+  } //cluster loop 
+  
+
+  // Track loop 
+  Int_t ntracks = GetNumberOfTracks();
+  //cout << ntracks << " tracks" << endl;
+  for(Int_t i = 0; i < ntracks; i++) {
+    //cout << "track n. " << i << endl;
+    AliVTrack* track = GetTrack(i); // pointer to reconstructed to track          
+    if(!track) {
+      AliError(Form("ERROR: Could not retrieve esdtrack %d",i)); 
+      continue; 
+    }
+    
+    if (!AcceptTrack(track)) continue;
+
+    fHistTracksPt->Fill(track->Pt());
+
+    Int_t clId = track->GetEMCALcluster();
+    if (clId > -1) {
+      AliVCluster* cluster = GetCaloCluster(clId);
+      if (cluster)
+       fHistEPcorrelation->Fill(track->P(),cluster->E());
+    } 
+
+    Float_t eta,phi;
+    Int_t label;
+
+    if(track->InheritsFrom("AliESDtrack")) {
+      AliESDtrack *esdtrack = dynamic_cast<AliESDtrack*>(track);
+      eta = esdtrack->Eta();
+      phi = esdtrack->Phi();
+      label = esdtrack->GetLabel();
+    }
+    else if (track->InheritsFrom("AliAODTrack")) {
+      AliAODTrack *aodtrack = dynamic_cast<AliAODTrack*>(track);
+      eta = aodtrack->Eta();
+      phi = aodtrack->Phi();
+      label = aodtrack->GetLabel();
+    }
+    else if (track->InheritsFrom("AliPicoTrack")) {
+      AliPicoTrack *picotrack = dynamic_cast<AliPicoTrack*>(track);
+      eta = picotrack->Eta();
+      phi = picotrack->Phi();
+      label = picotrack->GetLabel();
+    }
+    else {
+      AliWarning("Track type not recognized! Will not plot phi\eta distributions!");
+      continue;
+    }
+
+    fHistTrPhiEta->Fill(eta, phi);
+    
+    fHistTrackEta[4]->Fill(eta);
+    fHistTrackPhi[4]->Fill(phi);
+
+    if (label >= 0 && label < 4) {
+      fHistTrackEta[label]->Fill(eta);
+      fHistTrackPhi[label]->Fill(phi);
+    }
+    else {
+      AliWarning(Form("Track label %d not recognized!",label));
+    }
+   
+  }
+
+  // Jet loop
+  Int_t njets =  GetNumberOfJets();
+  //cout << njets << " jets" << endl;
+  for (Int_t ij = 0; ij < njets; ij++) {
+    AliEmcalJet* jet = GetJet(ij);
+    if (!jet) {
+      printf("ERROR: Could not receive jet %d\n", ij);
+      continue;
+    }  
+
+    if (jet->E() <= 0)
+      continue;
+
+    fHistJetPhiEta->Fill(jet->Eta(), jet->Phi());
+    fHistJetsEnergy->Fill(jet->E());
+  } //jet loop 
+
+  Int_t ntrgclusters =  GetNumberOfTrgClusters();
+  Float_t maxe = 0;
+  //cout << ntrgclusters << " clusters" << endl;
+  for (Int_t iClusters = 0; iClusters < ntrgclusters; iClusters++) {
+    AliVCluster* cluster = GetTrgCluster(iClusters);
+    if (!cluster) {
+      printf("ERROR: Could not receive cluster %d\n", iClusters);
+      continue;
+    }  
+    
+    if (!(cluster->IsEMCAL())) continue;
+
+    if (cluster->E() > maxe)
+      maxe = cluster->E();
+
+  } //cluster loop 
+  fHistMaxTrgCluster->Fill(maxe);
+  
+}
+
+//________________________________________________________________________
+Bool_t AliEmcalQATask::AcceptTrack(AliVTrack* /*track*/)
+{
+  return kTRUE;
+}
+
+//________________________________________________________________________
+void AliEmcalQATask::UserExec(Option_t *) 
+{
+  // Main loop, called for each event.
+  // Add jets to event if not yet there
+
+  RetrieveEventObjects();
+
+  FillHistograms();
+    
+  // information for this iteration of the UserExec in the container
+  PostData(1, fOutput);
+}
+
+//________________________________________________________________________
+void AliEmcalQATask::Terminate(Option_t *) 
+{
+  // Called once at the end of the analysis.
+}
diff --git a/PWGGA/EMCALTasks/AliEmcalQATask.h b/PWGGA/EMCALTasks/AliEmcalQATask.h
new file mode 100644 (file)
index 0000000..385aaa9
--- /dev/null
@@ -0,0 +1,84 @@
+#ifndef ALIEMCALQATASK_H
+#define ALIEMCALQATASK_H
+
+// $Id$
+
+class TClonesArray;
+class TString;
+class AliVTrack;
+class AliVCluster;
+class TList;
+class TH1F;
+class TH2F;
+class AliEmcalJet;
+
+#include "AliAnalysisTaskSE.h"
+
+class AliEmcalQATask : public AliAnalysisTaskSE {
+ public:
+  AliEmcalQATask();
+  AliEmcalQATask(const char *name);
+  virtual ~AliEmcalQATask();
+
+  void                        UserCreateOutputObjects();
+  void                        UserExec(Option_t *option);
+  void                        Terminate(Option_t *option);
+
+  void                        SetClusName(const char *n)                    { fCaloName      = n          ; }
+  void                        SetJetsName(const char *n)                    { fJetsName      = n          ; }
+  void                        SetTracksName(const char *n)                  { fTracksName    = n          ; }
+  void                        SetTrgClusName(const char *n)                 { fTrgClusName   = n          ; }
+
+ protected:
+
+  AliVTrack                  *GetTrack(const Int_t i)          const;
+  Int_t                       GetNumberOfTracks()              const;
+  AliVCluster                *GetCaloCluster(const Int_t i)    const;
+  Int_t                       GetNumberOfCaloClusters()        const;
+  AliEmcalJet                *GetJet(const Int_t i)            const;
+  Int_t                       GetNumberOfJets()                const;
+  AliVCluster                *GetTrgCluster(const Int_t i)     const;
+  Int_t                       GetNumberOfTrgClusters()         const;
+  void                        FillHistograms()                      ;
+  void                        RetrieveEventObjects()                ;
+  Bool_t                      AcceptTrack(AliVTrack* /*track*/)     ;
+
+  TList                      *fOutput;                 // Output list
+
+  TString                     fTracksName;             // name of track collection
+  TString                     fCaloName;               // name of calo cluster collection
+  TString                     fJetsName;               // name of jet collection
+  TString                     fTrgClusName;            // name of trg clus name
+  TClonesArray               *fTracks;                 //!Tracks
+  TClonesArray               *fCaloClusters;           //!Clusters
+  TClonesArray               *fJets;                   //!Jets
+  TClonesArray               *fTrgClusters;            //!Trg Clusters
+  AliCentrality              *fCent;                   // Event centrality
+  TH1F                       *fHistCentrality;         // Event centrality distribution
+  TH2F                       *fHistTracksCent;         // Number of tracks vs. centrality
+  TH2F                       *fHistClusCent;           // Number of clusters vs. centrality
+  TH1F                       *fHistTracksPt;           // Pt spectrum of tracks
+  TH1F                       *fHistClustersEnergy;     // Energy spectrum of clusters
+  TH2F                       *fHistEPcorrelation;      // Energy-momentum correlation
+  TH1F                       *fHistJetsEnergy;         // Energy spectrum of jets
+  TH2F                       *fHistTrPhiEta;           // Phi-Eta distribution of tracks
+  TH2F                       *fHistClusPhiEta;         // Phi-Eta distribution of clusters
+  TH2F                       *fHistJetPhiEta;          // Phi-Eta distribution of jets
+  TH1F                       *fHistMaxTrgCluster;      // Energy distribution of max trigger clusters
+  TH1F                       *fHistTrackPhi[5];        // Phi distribution of hybrid tracks
+  TH1F                       *fHistTrackEta[5];        // Eta distribution of hybrid tracks
+
+  Int_t                       Ptbins;                  // No. of pt bins
+  Float_t                     Ptlow;                   // Min pt
+  Float_t                     Ptup;                    // Max pt
+  Int_t                       Ebins;                   // No. of e bins
+  Float_t                     Elow;                    // Min e
+  Float_t                     Eup;                     // Max e
+
+ private:
+  AliEmcalQATask(const AliEmcalQATask&);            // not implemented
+  AliEmcalQATask &operator=(const AliEmcalQATask&); // not implemented
+
+  ClassDef(AliEmcalQATask, 1) // Quality task for Emcal analysis
+};
+#endif
index 1d063ef2b90d21548318187d091a36eb67fed806..e3394e268a20be58d29c51c5e5ffeb7496408db0 100644 (file)
@@ -6,36 +6,37 @@
 
 #pragma link C++ class AliAnalysisTaskEMCALClusterize+;
 #pragma link C++ class AliAnalysisTaskEMCALClusterizeFast+;
+#pragma link C++ class AliAnalysisTaskEMCALPhoton+;
 #pragma link C++ class AliAnalysisTaskEMCALPi0CalibSelection+;
 #pragma link C++ class AliAnalysisTaskEMCALPi0PbPb+;
 #pragma link C++ class AliAnalysisTaskEMCALTriggerQA+;
 #pragma link C++ class AliAnalysisTaskESDfilterEMCALEventSelect+;
+#pragma link C++ class AliAnalysisTaskTrgContam+;
 #pragma link C++ class AliEmcalClusTrackMatcherTask+;
 #pragma link C++ class AliEmcalCompatTask+;
 #pragma link C++ class AliEmcalEsdTpcTrackTask+;
+#pragma link C++ class AliEmcalIsolatedPhotonsTask+;
 #pragma link C++ class AliEmcalJet+;
 #pragma link C++ class AliEmcalPhysicsSelection+;
 #pragma link C++ class AliEmcalPhysicsSelectionTask+;
-#pragma link C++ class AliEmcalSetupTask+;
-#pragma link C++ class AliEmcalTrackPropagatorTask+;
-#pragma link C++ class AliEmcalIsolatedPhotonsTask+;
 #pragma link C++ class AliEmcalPicoTrackMaker+;
+#pragma link C++ class AliEmcalQATask+;
+#pragma link C++ class AliEmcalSetupTask+;
 #pragma link C++ class AliEmcalTenderTask+;
+#pragma link C++ class AliEmcalTrackPropagatorTask+;
 #pragma link C++ class AliEsdSkimTask+;
 #pragma link C++ class AliEsdTrackExt+;
+#pragma link C++ class AliPhotonCellObj+;
+#pragma link C++ class AliPhotonClusterObj+;
+#pragma link C++ class AliPhotonConvObj+;
+#pragma link C++ class AliPhotonHeaderObj+;
+#pragma link C++ class AliPhotonMcPartObj+;
+#pragma link C++ class AliPhotonTrackObj+;
 #pragma link C++ class AliPicoTrack+;
 #pragma link C++ class AliStaCluster+;
 #pragma link C++ class AliStaHeader+;
 #pragma link C++ class AliStaPart+;
 #pragma link C++ class AliStaTrigger+;
 #pragma link C++ class AliStaVertex+;
-#pragma link C++ class AliAnalysisTaskTrgContam+;
-#pragma link C++ class AliAnalysisTaskEMCALPhoton+;
-#pragma link C++ class AliPhotonHeaderObj+;        //stand alone obj for isolated photon analysis
-#pragma link C++ class AliPhotonConvObj+;          //same as above
-#pragma link C++ class AliPhotonClusterObj+;       //same as above
-#pragma link C++ class AliPhotonCellObj+;          //same as above
-#pragma link C++ class AliPhotonTrackObj+;         //same as above
-#pragma link C++ class AliPhotonMcPartObj+;        //same as above
 
 #endif