]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Adding new helper class to convert from Gamma conversion aod object to PWG4ParticleCo...
authorslindal <slindal@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 24 Jan 2011 14:32:38 +0000 (14:32 +0000)
committerslindal <slindal@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 24 Jan 2011 14:32:38 +0000 (14:32 +0000)
PWG4/CMakelibPWG4GammaConv.pkg
PWG4/GammaConv/AliAnalysisTaskGCPartToPWG4Part.cxx [new file with mode: 0644]
PWG4/GammaConv/AliAnalysisTaskGCPartToPWG4Part.h [new file with mode: 0644]
PWG4/GammaConv/AliAnalysisTaskGammaConversion.cxx
PWG4/GammaConv/AliAnalysisTaskGammaJet.cxx
PWG4/GammaConv/AliAnalysisTaskGammaJet.h
PWG4/PWG4GammaConvLinkDef.h

index c57c9a4b3a48590b6f570c2a31da0abca5c80f09..64fbb3cdb141e410210e23bdd769bb9f5fad14dc 100644 (file)
@@ -25,7 +25,7 @@
 # SHLIBS - Shared Libraries and objects for linking (Executables only)           #
 #--------------------------------------------------------------------------------#
 
-set ( SRCS  GammaConv/AliV0Reader.cxx  GammaConv/AliAnalysisTaskGammaConversion.cxx GammaConv/AliGammaConversionHistograms.cxx GammaConv/AliGammaConversionAODObject.cxx GammaConv/AliAODConversionParticle.cxx GammaConv/AliGammaConversionBGHandler.cxx GammaConv/AliAnalysisTaskCaloConv.cxx GammaConv/AliAnalysisTaskGammaJet.cxx GammaConv/AliAnalysisTaskGammaConvDalitz.cxx)
+set ( SRCS  GammaConv/AliV0Reader.cxx  GammaConv/AliAnalysisTaskGammaConversion.cxx GammaConv/AliGammaConversionHistograms.cxx GammaConv/AliGammaConversionAODObject.cxx GammaConv/AliAODConversionParticle.cxx GammaConv/AliGammaConversionBGHandler.cxx GammaConv/AliAnalysisTaskCaloConv.cxx GammaConv/AliAnalysisTaskGammaJet.cxx GammaConv/AliAnalysisTaskGammaConvDalitz.cxx GammaConv/AliAnalysisTaskGCPartToPWG4Part.cxx )
 
 string ( REPLACE ".cxx" ".h" HDRS "${SRCS}" )
 
diff --git a/PWG4/GammaConv/AliAnalysisTaskGCPartToPWG4Part.cxx b/PWG4/GammaConv/AliAnalysisTaskGCPartToPWG4Part.cxx
new file mode 100644 (file)
index 0000000..b228d5f
--- /dev/null
@@ -0,0 +1,212 @@
+#include <iostream>
+#include "TChain.h"
+#include "TTree.h"
+#include "TH1F.h"
+#include "TCanvas.h"
+#include "TString.h"
+
+#include "AliAnalysisTask.h"
+#include "AliAnalysisManager.h"
+#include "AliAnalysisTaskGCPartToPWG4Part.h"
+
+#include "AliESDEvent.h"
+#include "AliESDCaloCluster.h"
+#include "AliESDInputHandler.h"
+
+#include "AliAODPWG4ParticleCorrelation.h"
+#include "AliAODEvent.h"
+#include "AliAODHandler.h"
+#include "AliAODCaloCluster.h"
+#include "AliGammaConversionAODObject.h"
+#include "AliAODConversionParticle.h"
+#include "AliAODJet.h"
+
+#include "AliAODInputHandler.h"
+
+// Gamma - jet correlation analysis task
+// Authors: Svein Lindal
+
+
+using namespace std;
+
+ClassImp(AliAnalysisTaskGCPartToPWG4Part)
+
+//________________________________________________________________________
+AliAnalysisTaskGCPartToPWG4Part::AliAnalysisTaskGCPartToPWG4Part() 
+: AliAnalysisTaskSE(), 
+  fDeltaAODFileName("AliAODConversionGamma.root"),
+  fAODBranchName("ConvGamma_gamma"),
+  fAODPWG4Particles(NULL)
+{
+  // Dummy Constructor
+}
+
+//________________________________________________________________________________
+AliAnalysisTaskGCPartToPWG4Part::~AliAnalysisTaskGCPartToPWG4Part() {
+
+  if(fAODPWG4Particles)
+    fAODPWG4Particles = NULL;
+  delete fAODPWG4Particles;
+
+}
+
+
+
+//________________________________________________________________________
+AliAnalysisTaskGCPartToPWG4Part::AliAnalysisTaskGCPartToPWG4Part(const char *name) : 
+  AliAnalysisTaskSE(name), 
+  fDeltaAODFileName("AliAODConversionGamma.root"),
+  fAODBranchName("ConvGamma_gamma"),
+  fAODPWG4Particles(NULL)
+{
+  // Constructor
+  DefineInput(0, TChain::Class());
+  // Output slot #0 id reserved by the base class for AOD
+
+  // Output slot #1 writes into a TH1 container
+  DefineOutput(1, TList::Class());
+}
+
+
+
+//________________________________________________________________________
+void AliAnalysisTaskGCPartToPWG4Part::UserCreateOutputObjects() {
+  fAODPWG4Particles = new TClonesArray("AliAODPWG4ParticleCorrelation", 0);
+  fAODPWG4Particles->SetName("ConversionGamma");
+  AddAODBranch("TClonesArray", &fAODPWG4Particles);
+
+}
+
+//________________________________________________________________________
+void AliAnalysisTaskGCPartToPWG4Part::UserExec(Option_t *) 
+{
+  
+  //AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler()->SetFillAOD(kTRUE);
+
+  //Clear stuff for new event
+  CleanUp();
+
+  ///Get AOD event
+  AliAODEvent * aodEvent = GetAODEvent();
+  if(!aodEvent) {
+    AliError("No AOD event!!");
+    return;
+  }
+  
+
+  ProcessConvGamma(aodEvent);
+    
+
+  //PostData(1, fOutputList);
+        
+}
+
+
+
+//___________________________________________________________________________________________
+void AliAnalysisTaskGCPartToPWG4Part::ProcessConvGamma( const AliAODEvent * const aodEvent ) {
+  
+  TClonesArray * tracks = aodEvent->GetTracks();
+  if(!tracks) {
+    cout << "No tracks!!!"<<endl;
+    return;
+  }
+
+
+  TClonesArray * convGamma = GetConversionGammas(aodEvent);
+  if(!convGamma) {
+    AliError(Form("No branch by name %s found in file %s", fAODBranchName.Data(), fDeltaAODFileName.Data()));
+    return;
+  }
+  
+
+
+  for (Int_t iPhot = 0; iPhot < convGamma->GetEntriesFast(); iPhot++) {
+    AliAODPWG4Particle * photon = dynamic_cast<AliAODPWG4Particle*>(convGamma->At(iPhot));
+    
+    
+    if(!photon) {
+      AliGammaConversionAODObject * aodO = dynamic_cast<AliGammaConversionAODObject*>(convGamma->At(iPhot));
+      if (!aodO) {
+       AliError(Form("ERROR: Could not receive ga %d\n", iPhot));
+       continue;
+      }
+      
+      //if(aodO->Pt() < GetMinPt()) continue;
+      AddToAOD(aodO, fAODPWG4Particles, "ConvGamma");
+
+    }
+  }
+}
+
+///__________________________________________________________________________________
+AliAODPWG4ParticleCorrelation * AliAnalysisTaskGCPartToPWG4Part::AddToAOD(AliGammaConversionAODObject * aodO, TClonesArray * branch, TString detector) {
+  new((*branch)[branch->GetEntriesFast()]) AliAODPWG4ParticleCorrelation(aodO->Px(), aodO->Py(), aodO->Pz(), aodO->E());
+  AliAODPWG4ParticleCorrelation * photon = dynamic_cast<AliAODPWG4ParticleCorrelation*>(branch->Last());
+  photon->SetTagged(aodO->IsTagged());
+  photon->SetTrackLabel(aodO->GetLabel1(), aodO->GetLabel2());
+  photon->SetDetector(detector);
+  return photon;
+}
+
+///__________________________________________________________________________________
+AliAODPWG4ParticleCorrelation * AliAnalysisTaskGCPartToPWG4Part::AddToAOD(AliAODConversionParticle * aodO, TClonesArray * branch, TString detector) {
+  new((*branch)[branch->GetEntriesFast()]) AliAODPWG4ParticleCorrelation(aodO->Px(), aodO->Py(), aodO->Pz(), aodO->E());
+  AliAODPWG4ParticleCorrelation * photon = dynamic_cast<AliAODPWG4ParticleCorrelation*>(branch->Last());
+  photon->SetTrackLabel(aodO->GetLabel1(), aodO->GetLabel2());
+  photon->SetDetector(detector);
+  return photon;
+}
+
+
+
+
+//_____________________________________________________________________
+void AliAnalysisTaskGCPartToPWG4Part::Terminate(Option_t *) {
+  // Draw result to the screen
+  // Called once at the end of the query
+}
+
+//_____________________________________________________________________
+AliAODEvent * AliAnalysisTaskGCPartToPWG4Part::GetAODEvent() {
+  //Get the AOD event from whereever it might be
+  AliAODEvent * aodEvent = dynamic_cast<AliAODEvent*>(InputEvent());
+  if(!aodEvent) {
+    aodEvent = AODEvent();
+  }
+  
+  return aodEvent;
+
+}
+
+//_____________________________________________________________________
+TClonesArray * AliAnalysisTaskGCPartToPWG4Part::GetConversionGammas(const AliAODEvent * aodEvent) {
+
+  //Get Conversion gamma branch of AOD. First try standard AOD
+  TClonesArray * convGamma = dynamic_cast<TClonesArray*>(aodEvent->FindListObject(fAODBranchName.Data()));
+  
+
+  //If it's there, send it back
+  if(convGamma)  return convGamma;
+
+
+  //If AOD not in standard file have to locate it in delta AOD
+  if( !(fDeltaAODFileName.Length() > 0)  ) return NULL;
+  
+  AliAODHandler * aodHandler = dynamic_cast<AliAODHandler*>(AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler()); 
+  if(aodHandler) {
+    AliAODExtension * gExt = dynamic_cast<AliAODExtension*>(aodHandler->GetExtensions()->FindObject(fDeltaAODFileName));
+    if(gExt) {
+      AliAODEvent * gcEvent = gExt->GetAOD();
+      return dynamic_cast<TClonesArray*>(gcEvent->FindListObject("GammaConv_gamma"));
+    }
+  }  
+  return NULL;
+}
+
+//_________________________________________________________________________
+void AliAnalysisTaskGCPartToPWG4Part::CleanUp() {
+  fAODPWG4Particles->Delete();
+}
+
+
diff --git a/PWG4/GammaConv/AliAnalysisTaskGCPartToPWG4Part.h b/PWG4/GammaConv/AliAnalysisTaskGCPartToPWG4Part.h
new file mode 100644 (file)
index 0000000..23f5f2c
--- /dev/null
@@ -0,0 +1,62 @@
+#ifndef AliAnalysisTaskGCPartToPWG4Part_cxx\r
+#define AliAnalysisTaskGCPartToPWG4Part_cxx\r
+\r
+// example of an analysis task creating a p_t spectrum\r
+// Authors: Svein Lindal\r
+\r
+class TH1F;\r
+class AliESDEvent;\r
+class AliGammaConversionAODObject;\r
+class AliAODConversionParticle;\r
+class AliAODPWG4ParticleCorrelation;\r
+class AliAODPWG4Particle;\r
+class TClonesArray;\r
+class TString;\r
+\r
+#include "AliAnalysisTaskSE.h"\r
+\r
+class AliAnalysisTaskGCPartToPWG4Part : public AliAnalysisTaskSE {\r
+\r
+public:\r
+\r
+  AliAnalysisTaskGCPartToPWG4Part(); \r
+  AliAnalysisTaskGCPartToPWG4Part(const char *name);\r
+  virtual ~AliAnalysisTaskGCPartToPWG4Part();\r
+  \r
+  virtual void   UserCreateOutputObjects();\r
+  virtual void   UserExec(Option_t *option);\r
+  virtual void   Terminate(Option_t *);\r
+\r
+  void SetDeltaAODFileName(TString string) { fDeltaAODFileName = string;}\r
+  void SetGammaBranchName(TString string) { fAODBranchName = string; }\r
\r
+  \r
+ private:\r
+\r
+  //Clean up\r
+  void CleanUp();\r
+\r
+  //Get the AOD event from whereever it might be accessible\r
+  AliAODEvent * GetAODEvent();\r
+\r
+  //Get Conversion gammas branch\r
+  TClonesArray * GetConversionGammas(const AliAODEvent * aodEvent);\r
+\r
+  //Fill AOD tree with PWG4 particles\r
+  AliAODPWG4ParticleCorrelation * AddToAOD(AliGammaConversionAODObject * aodO, TClonesArray * branch, TString detector);\r
+  AliAODPWG4ParticleCorrelation * AddToAOD(AliAODConversionParticle * aodO, TClonesArray * branch, TString detector);\r
+  \r
+  //Process conv gamma\r
+  void ProcessConvGamma( const AliAODEvent * const aodEvent );\r
+\r
+  TString     fDeltaAODFileName;//! File where Gamma Conv AOD is located, if not in default AOD\r
+  TString     fAODBranchName;\r
+  TClonesArray * fAODPWG4Particles;\r
+\r
+  AliAnalysisTaskGCPartToPWG4Part(const AliAnalysisTaskGCPartToPWG4Part&); // not implemented\r
+  AliAnalysisTaskGCPartToPWG4Part& operator=(const AliAnalysisTaskGCPartToPWG4Part&); // not implemented\r
+  \r
+  ClassDef(AliAnalysisTaskGCPartToPWG4Part, 1); // example of analysis\r
+};\r
+\r
+#endif\r
index 0513f3963c4fdd742a11bf3462fd5813e6de724a..0986c594806ffe6c86fd7b9f18a09d60ac005cea 100644 (file)
@@ -2036,6 +2036,7 @@ void AliAnalysisTaskGammaConversion::FillAODWithConversionGammas(){
       gamma.SetPx(gammakf->GetPx());
       gamma.SetPy(gammakf->GetPy());
       gamma.SetPz(gammakf->GetPz());
+      gamma.SetE(gammakf->GetE());
       gamma.SetLabel1(fElectronv1[gammaIndex]);
       gamma.SetLabel2(fElectronv2[gammaIndex]);
       gamma.SetChi2(gammakf->Chi2());
index ab9fa8e32890cf06dcc30f8676047b454d057241..93ce14d90ac17f05c5906642f33a27580ec154a7 100644 (file)
 #include "AliAODHandler.h"
 #include "AliAODCaloCluster.h"
 #include "AliGammaConversionAODObject.h"
+#include "AliAODConversionParticle.h"
 #include "AliAODJet.h"
 
+#include "AliAODInputHandler.h"
+
 // Gamma - jet correlation analysis task
 // Authors: Svein Lindal
 
@@ -34,12 +37,25 @@ AliAnalysisTaskGammaJet::AliAnalysisTaskGammaJet() : AliAnalysisTaskSE(),
   fHistPt(NULL),
   fHistPtPhos(NULL),
   fHistPtEmcal(NULL),
+
+  fHistPhotPhi(NULL), 
+  fHistHadPhi(NULL), 
+  fHistJetPhi(NULL), 
+
   fHistPtJets(NULL),
   fHistGammaJets(NULL),
   fHistGammaJetsIso(NULL),
   fHistMaxdPhi(NULL),
   fHistMaxdPhiIso(NULL),
   fHistMaxdPhiIsoPt(NULL),
+
+  fHadHistPt(NULL), //! Pt spectrum
+  fHadHistdPhi(NULL), //!Phi correlations
+  fHadHistdPhiIso(NULL), //!Phi correlations
+  fHadHistMaxdPhi(NULL), //!Phi correlations
+  fHadHistMaxdPhiIso(NULL), //!Phi correlations
+  fHadHistMaxdPhiIsoPt(NULL), //!Phi correlations
+
   fMinPt(2.0),
   fConeSize(0.9),
   fPtThreshold(2.0),
@@ -49,6 +65,57 @@ AliAnalysisTaskGammaJet::AliAnalysisTaskGammaJet() : AliAnalysisTaskSE(),
   // Dummy Constructor
 }
 
+//________________________________________________________________________________
+AliAnalysisTaskGammaJet::~AliAnalysisTaskGammaJet() {
+
+  if(fOutputList)
+    delete fOutputList; 
+  fOutputList = NULL;
+
+  if(fHistPt)
+    fHistPt = NULL;
+  delete fHistPt;
+  if(fHistPtPhos)
+    fHistPtPhos = NULL;
+  delete fHistPtPhos;
+
+  if(fHistPtEmcal)
+    fHistPtEmcal = NULL;
+  delete fHistPtEmcal;
+
+  if(fHistPtJets)
+    fHistPtJets= NULL;
+  delete fHistPtJets;
+
+    if(fHistGammaJets)
+      fHistGammaJets = NULL;
+  delete fHistGammaJets;
+
+  if(fHistGammaJetsIso)
+    fHistGammaJetsIso = NULL;
+  delete fHistGammaJetsIso;
+  if(fHistMaxdPhi)
+    fHistMaxdPhi = NULL;
+  delete fHistMaxdPhi;
+  if(fHistMaxdPhiIso)
+    fHistMaxdPhiIso = NULL;
+  delete fHistMaxdPhiIso;
+  if(fHistMaxdPhiIsoPt)
+    fHistMaxdPhiIsoPt = NULL;
+  delete fHistMaxdPhiIsoPt;
+   
+  if(fPhotons)
+    fPhotons = NULL;
+  delete fPhotons;
+
+
+}
+
+
 
 //________________________________________________________________________
 AliAnalysisTaskGammaJet::AliAnalysisTaskGammaJet(const char *name) : 
@@ -57,12 +124,25 @@ AliAnalysisTaskGammaJet::AliAnalysisTaskGammaJet(const char *name) :
   fHistPt(0),
   fHistPtPhos(0),
   fHistPtEmcal(0),
+
+  fHistPhotPhi(NULL), 
+  fHistHadPhi(NULL), 
+  fHistJetPhi(NULL), 
+
   fHistPtJets(0),
   fHistGammaJets(NULL),
   fHistGammaJetsIso(NULL),
   fHistMaxdPhi(NULL),
   fHistMaxdPhiIso(NULL),
   fHistMaxdPhiIsoPt(NULL),
+
+  fHadHistPt(NULL), //! Pt spectrum
+  fHadHistdPhi(NULL), //!Phi correlations
+  fHadHistdPhiIso(NULL), //!Phi correlations
+  fHadHistMaxdPhi(NULL), //!Phi correlations
+  fHadHistMaxdPhiIso(NULL), //!Phi correlations
+  fHadHistMaxdPhiIsoPt(NULL), //!Phi correlations
+
   fMinPt(0.0),
   fConeSize(0.0),
   fPtThreshold(0.0),
@@ -102,6 +182,13 @@ void AliAnalysisTaskGammaJet::UserCreateOutputObjects()
   fHistPtEmcal->SetMarkerStyle(kFullCircle);
   fOutputList->Add(fHistPtEmcal);
 
+  fHistPhotPhi = new TH1F("phi gamma", "phi gamma", 120, -6.3, 6.3);
+  fOutputList->Add(fHistPhotPhi);
+  fHistHadPhi = new TH1F("phi track", "phi track", 120, -6.3, 6.3);
+  fOutputList->Add(fHistHadPhi);
+  fHistJetPhi = new TH1F("phi jet", "phi jet", 120, -6.3, 6.3);
+  fOutputList->Add(fHistJetPhi);
+
 
   fHistPtJets = new TH1F("fHistPtJets", "P_{T} distribution", 150, 0.1, 50);
   fHistPtJets->GetXaxis()->SetTitle("P_{T} (GeV/c)");
@@ -124,33 +211,64 @@ void AliAnalysisTaskGammaJet::UserCreateOutputObjects()
 
   fHistMaxdPhiIsoPt = new TH1F("fHistMaxdPhiIsoPt", "fHistMaxdPhiIsoPt", 200, -2*TMath::Pi(), 2*TMath::Pi());
   fOutputList->Add(fHistMaxdPhiIsoPt);
+
+
+
+
+  fHadHistPt = new TH1F("fHadHistPt", "P_{T} distribution", 150, 0.1, 50);
+  fHadHistPt->GetXaxis()->SetTitle("P_{T} (GeV/c)");
+  fHadHistPt->GetYaxis()->SetTitle("dN/dP_{T} (c/GeV)");
+  fHadHistPt->SetMarkerStyle(kFullCircle);
+  fOutputList->Add(fHadHistPt);
+  
+
+  fHadHistdPhi = new TH1F("fHadHistdPhi", "fHadHistdPhi", 200, -2*TMath::Pi(), 2*TMath::Pi());
+  fOutputList->Add(fHadHistdPhi);
+  
+  fHadHistdPhiIso = new TH1F("fHadHistdPhiIso", "fHadHistdPhiIso", 200, -2*TMath::Pi(), 2*TMath::Pi());
+  fOutputList->Add(fHadHistdPhiIso);
+
+
+  fHadHistMaxdPhi = new TH1F("fHadHistMaxdPhi", "fHadHistMaxdPhi", 200, -2*TMath::Pi(), 2*TMath::Pi());
+  fOutputList->Add(fHadHistMaxdPhi);
+  
+  fHadHistMaxdPhiIso = new TH1F("fHadHistMaxdPhiIso", "fHadHistMaxdPhiIso", 200, -2*TMath::Pi(), 2*TMath::Pi());
+  fOutputList->Add(fHadHistMaxdPhiIso);
+
+  fHadHistMaxdPhiIsoPt = new TH1F("fHadHistMaxdPhiIsoPt", "fHadHistMaxdPhiIsoPt", 200, -2*TMath::Pi(), 2*TMath::Pi());
+  fOutputList->Add(fHadHistMaxdPhiIsoPt);
+
+
+
+
   
   //TNtuple * tuple = new TNtuple("fNtuple", "fNtuple", dPhi, 
 
 
   ///Create AOD branch
   fPhotons = new TClonesArray("AliAODPWG4ParticleCorrelation", 0);
-  fPhotons->SetName("fPhotons");
+  fPhotons->SetName("ConversionGamma");
   AddAODBranch("TClonesArray", &fPhotons);
 
-  ///Isolation class
-  // fIsolation = new AliAnaParticleIsolation();
-  // fIsolation->SetInputAODName("fPhotons");
-
 
 }
 
 //________________________________________________________________________
 void AliAnalysisTaskGammaJet::UserExec(Option_t *) 
 {
-  // Main loop
-  // Called for each event
-  
+
+
+  //BALLE BALLE not do always
+  AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler()->SetFillAOD(kTRUE);
+
 
   //Clear stuff for new event
   CleanUp();
 
 
+  
+
+
   ///Get AOD event
   AliAODEvent * aodEvent = GetAODEvent();
   if(!aodEvent) {
@@ -158,10 +276,6 @@ void AliAnalysisTaskGammaJet::UserExec(Option_t *)
     return;
   }
   
-  
-  //FillPWG4PartCorrBranch(convGamma, fPhotons, "ConvGamma");
-  //fIsolation->MakeAnalysisFillAOD();
-  
   ProcessConvGamma(aodEvent);
   //ProcessCalorimeters(aodEvent);
     
@@ -197,6 +311,7 @@ TClonesArray * AliAnalysisTaskGammaJet::GetConversionGammas(const AliAODEvent *
   //If it's there, send it back
   if(convGamma)  return convGamma;
 
+
   //If AOD not in standard file have to locate it in delta AOD
   if( !(fDeltaAODFileName.Length() > 0)  ) return NULL;
   
@@ -212,35 +327,35 @@ TClonesArray * AliAnalysisTaskGammaJet::GetConversionGammas(const AliAODEvent *
 }
 
 
-//_____________________________________________________________________
-void AliAnalysisTaskGammaJet::FillPWG4PartCorrBranch( TClonesArray * gcBranch, TClonesArray * partCorrBranch , TString detector ) {
+// //_____________________________________________________________________
+// void AliAnalysisTaskGammaJet::FillPWG4PartCorrBranch( TClonesArray * gcBranch, TClonesArray * partCorrBranch , TString detector ) {
   
-  for(int i = 0; i < gcBranch->GetEntriesFast(); i++) {
-    AliGammaConversionAODObject * gcObject = dynamic_cast<AliGammaConversionAODObject*>(gcBranch->At(i));
-    if ( gcObject ) {
-      AliAODPWG4ParticleCorrelation pc(gcObject->Px(), gcObject->Py(), gcObject->Pz(), gcObject->E()); 
-      pc.SetTagged(gcObject->IsTagged());
-      pc.SetTrackLabel(gcObject->GetLabel1(), gcObject->GetLabel2());
-      pc.SetDetector(detector);
-      new((*partCorrBranch)[i]) AliAODPWG4ParticleCorrelation(pc);
+//   for(int i = 0; i < gcBranch->GetEntriesFast(); i++) {
+//     AliGammaConversionAODObject * gcObject = dynamic_cast<AliGammaConversionAODObject*>(gcBranch->At(i));
+//     if ( gcObject ) {
+//       AliAODPWG4ParticleCorrelation pc(gcObject->Px(), gcObject->Py(), gcObject->Pz(), gcObject->E()); 
+//       pc.SetTagged(gcObject->IsTagged());
+//       pc.SetTrackLabel(gcObject->GetLabel1(), gcObject->GetLabel2());
+//       pc.SetDetector(detector);
+//       new((*partCorrBranch)[i]) AliAODPWG4ParticleCorrelation(pc);
     
-    } else {
-      AliError(Form("Couldn't get gamma conversion aod object"));
-    }
+//     } else {
+//       AliError(Form("Couldn't get gamma conversion aod object"));
+//     }
    
-  }
-}
+//   }
+// }
 
 
-//_____________________________________________________________________
-AliAODPWG4ParticleCorrelation * AliAnalysisTaskGammaJet::PWG4PartFromGammaConvAODObject(AliGammaConversionAODObject * gcObject, TString detector ) {
+// //_____________________________________________________________________
+// AliAODPWG4ParticleCorrelation * AliAnalysisTaskGammaJet::PWG4PartFromGammaConvAODObject(AliGammaConversionAODObject * gcObject, TString detector ) {
 
-  AliAODPWG4ParticleCorrelation * pc = new AliAODPWG4ParticleCorrelation(gcObject->Px(), gcObject->Py(), gcObject->Pz(), gcObject->E());
-  pc->SetTagged(gcObject->IsTagged());
-  pc->SetTrackLabel(gcObject->GetLabel1(), gcObject->GetLabel2());
-  pc->SetDetector(detector);
-  return pc;
-}
+//   AliAODPWG4ParticleCorrelation * pc = new AliAODPWG4ParticleCorrelation(gcObject->Px(), gcObject->Py(), gcObject->Pz(), gcObject->E());
+//   pc->SetTagged(gcObject->IsTagged());
+//   pc->SetTrackLabel(gcObject->GetLabel1(), gcObject->GetLabel2());
+//   pc->SetDetector(detector);
+//   return pc;
+// }
 
 
 //_________________________________________________________________________
@@ -299,13 +414,43 @@ void AliAnalysisTaskGammaJet::ProcessCalorimeters( const AliAODEvent * const aod
     cluster->GetMomentum(tlvec, vertexPosition);
     if (tlvec.Pt() < GetMinPt()) continue; 
     
-    AliAODPWG4ParticleCorrelation * photon = new AliAODPWG4ParticleCorrelation(tlvec);
-    
-    photon->SetIsolated( IsIsolated(photon, aodEvent->GetTracks(), GetConeSize(), GetPtThreshold()) );
-    CorrelateWithJets(photon, aodEvent->GetJets());
   }
   
 }
+
+// // ///____________________________________________________________________________________
+// // void AddToAOD(AliAODConversionParticle * photon, TClonesArray * branch) {
+
+
+// // }
+
+
+// //__________________________________________________________________________________________
+// void AddToOutputAOD(AliGammaConversionAODObject * photon, TClonesArray * branch) {
+  
+//   cout <<"BALLE BALLE BALLE AddToOutputAOD"<<endl;
+
+//   AliAODPWG4ParticleCorrelation particle = AliAODPWG4ParticleCorrelation(photon->Px(), photon->Py(), photon->Pz(), photon->E());
+//   particle.SetTrackLabel(photon->GetLabel1(), photon->GetLabel2());
+//   particle.SetDetector("CTS");
+//   //particle.SetPdg(AliPID::kElecon);
+
+//   Int_t i = branch->GetEntriesFast();
+//   // if(! (branch.GetClass("Correlation")) ) {
+//   //   new((*branch)[i])  AliAODPWG4Particle(particle);
+//   // } else {
+//   TList * list = particle.GetObjArrayList();
+//   if(list)
+//     cout <<"BALLE BALLE we have the list"<<endl;
+//   else
+//     cout <<"BALLE BALLE we don't"<<endl;
+
+//  particle.GetObjArrayList()->Dump();
+//   new((*branch)[i])  AliAODPWG4ParticleCorrelation(particle);
+//     //}
+// }
+
+
 //___________________________________________________________________________________________
 void AliAnalysisTaskGammaJet::ProcessConvGamma( const AliAODEvent * const aodEvent ) {
   
@@ -316,16 +461,28 @@ void AliAnalysisTaskGammaJet::ProcessConvGamma( const AliAODEvent * const aodEve
   }
 
   Bool_t delP = kFALSE;
-  TClonesArray * convGamma = GetConversionGammas(aodEvent);
+
+
+
+
+  TClonesArray * convGamma = dynamic_cast<TClonesArray*>(aodEvent->FindListObject("GammaConversionTask_900356200010031"));
+  
+
   if(!convGamma) {
-    AliError(Form("No convgamma"));
-    return;
+
+    convGamma = GetConversionGammas(aodEvent);
+    if(!convGamma) {
+      AliError(Form("No convgamma"));
+      return;
+    }
   }
+  
+
 
   for (Int_t iPhot = 0; iPhot < convGamma->GetEntriesFast(); iPhot++) {
     AliAODPWG4Particle * photon = dynamic_cast<AliAODPWG4Particle*>(convGamma->At(iPhot));
-
-
+    
+    
     if(!photon) {
       AliGammaConversionAODObject * aodO = dynamic_cast<AliGammaConversionAODObject*>(convGamma->At(iPhot));
       if (!aodO) {
@@ -333,30 +490,105 @@ void AliAnalysisTaskGammaJet::ProcessConvGamma( const AliAODEvent * const aodEve
        continue;
       }
       
-      if(aodO->Pt() < GetMinPt()) continue;
+      //if(aodO->Pt() < GetMinPt()) continue;
+      AddToAOD(aodO, fPhotons, "ConvGamma");
       
-      
-      //Use the AODPWG4PartCorr shit!
-      photon = PWG4PartFromGammaConvAODObject(aodO, "ConvGamma");
-      delP = kTRUE;
+      delP = kFALSE;
     } 
   
     if(photon) {
+
+
       Bool_t isolated = IsIsolated(photon, tracks, GetConeSize(), GetPtThreshold() );
       
       
-      // if ( (aodO->Phi()) < 0 )
-      //   cout << aodO->Phi() << endl;
-      
       CorrelateWithJets(photon, aodEvent->GetJets(), isolated);
-      
+      CorrelateWithHadrons(photon, aodEvent->GetTracks(), isolated);
+
       fHistPt->Fill(photon->Pt());
-      
+      fHistPhotPhi->Fill(photon->Phi());
       if (delP) delete photon;
     }
   }
 }
 
+
+AliAODPWG4ParticleCorrelation * AliAnalysisTaskGammaJet::AddToAOD(AliGammaConversionAODObject * aodO, TClonesArray * branch, TString detector) {
+  new((*branch)[branch->GetEntriesFast()]) AliAODPWG4ParticleCorrelation(aodO->Px(), aodO->Py(), aodO->Pz(), aodO->E());
+  AliAODPWG4ParticleCorrelation * photon = dynamic_cast<AliAODPWG4ParticleCorrelation*>(branch->Last());
+  photon->SetTagged(aodO->IsTagged());
+  photon->SetTrackLabel(aodO->GetLabel1(), aodO->GetLabel2());
+  photon->SetDetector(detector);
+  return photon;
+}
+
+AliAODPWG4ParticleCorrelation * AliAnalysisTaskGammaJet::AddToAOD(AliAODConversionParticle * aodO, TClonesArray * branch, TString detector) {
+  new((*branch)[branch->GetEntriesFast()]) AliAODPWG4ParticleCorrelation(aodO->Px(), aodO->Py(), aodO->Pz(), aodO->E());
+  AliAODPWG4ParticleCorrelation * photon = dynamic_cast<AliAODPWG4ParticleCorrelation*>(branch->Last());
+  photon->SetTrackLabel(aodO->GetLabel1(), aodO->GetLabel2());
+  photon->SetDetector(detector);
+  return photon;
+}
+
+///____________________________________________________________________________________________________
+void AliAnalysisTaskGammaJet::CorrelateWithHadrons(AliAODPWG4Particle * photon, const TClonesArray * tracks, Bool_t const isolated) {
+
+  //See header file for documentation
+  if (tracks) {
+    Float_t maxdPhi = 0.0;
+    Float_t maxdPhiPt = 0.0;
+
+    for(int ij = 0; ij < tracks->GetEntriesFast(); ij++) {
+      AliAODTrack * track = dynamic_cast<AliAODTrack*>(tracks->At(ij));
+      if(track) {
+       if (track->Pt() < 2.0 ) continue;
+
+       fHadHistPt->Fill(track->Pt());
+       fHistHadPhi->Fill(track->Phi());
+       Float_t dPhi = TMath::Abs(photon->Phi() - track->Phi());
+       
+       fHadHistdPhi->Fill(dPhi);
+       if (isolated) {
+         fHadHistdPhiIso->Fill(dPhi, track->Pt()/photon->Pt());
+       }
+
+
+       if(photon->Phi() < 0)
+         cout << "BALLE"<<endl;
+       if(track->Phi() < 0 )
+         cout << "KUKKK"<<endl;
+         
+       //cout << dPhi << " " << maxdPhi << endl;
+       //cout << TMath::Abs( dPhi - TMath::Pi() ) << " " << TMath::Abs( maxdPhi - TMath::Pi()) <<endl;;
+
+       if ( TMath::Abs( dPhi - TMath::Pi() ) <   TMath::Abs( maxdPhi - TMath::Pi()) ){
+         maxdPhi = dPhi;
+
+         maxdPhiPt = track->Pt();
+         //cout << dPhi << " " << maxdPhi << endl;
+       
+       }
+
+      }
+    }
+
+
+    if(tracks->GetEntriesFast() > 0) {
+      //cout << maxdPhi << endl;
+      fHadHistMaxdPhi->Fill(maxdPhi);
+      if(isolated) {
+       fHadHistMaxdPhiIso->Fill(maxdPhi);
+       fHadHistMaxdPhiIsoPt->Fill(maxdPhi, maxdPhiPt/photon->Pt());
+      }
+    }
+  }
+
+
+
+}
+
+
 ///________________________________________________________________________________________________________________
 void AliAnalysisTaskGammaJet::CorrelateWithJets(AliAODPWG4ParticleCorrelation * photon, const TClonesArray * const jets) {
   //See header file for documentation
@@ -386,29 +618,40 @@ void AliAnalysisTaskGammaJet::CorrelateWithJets(AliAODPWG4Particle * photon, con
  
     Float_t maxdPhi = 0.0;
     Float_t maxdPhiPt = 0.0;
+
     for(int ij = 0; ij < jets->GetEntriesFast(); ij++) {
       AliAODJet * jet = dynamic_cast<AliAODJet*>(jets->At(ij));
       if(jet) {
        fHistPtJets->Fill(jet->Pt());
-        
+       fHistJetPhi->Fill(jet->Phi());
        Float_t dPhi = TMath::Abs(photon->Phi() - jet->Phi());
-       if ( TMath::Abs(dPhi - TMath::Pi()) < TMath::Abs(maxdPhi - TMath::Pi()) ){
+
+       fHistGammaJets->Fill(dPhi);
+       if (isolated) {
+         fHistGammaJetsIso->Fill(dPhi, jet->Pt()/photon->Pt());
+       }
+
+
+
+       if ( TMath::Abs( dPhi - TMath::Pi() ) <   TMath::Abs( maxdPhi - TMath::Pi()) ){
          maxdPhi = dPhi;
+
          maxdPhiPt = jet->Pt();
+         //cout << dPhi << " " << maxdPhi << endl;
+       
        }
         
-       if (isolated) {
-         fHistGammaJetsIso->Fill(dPhi, jet->Pt()/photon->Pt());
-       } else {
-         fHistGammaJets->Fill(dPhi);
-       }
       }
     }
 
-    fHistMaxdPhi->Fill(maxdPhi);
-    if(isolated) {
-      fHistMaxdPhiIso->Fill(maxdPhi);
-      fHistMaxdPhiIsoPt->Fill(maxdPhi, maxdPhiPt/photon->Pt());
+
+    if(jets->GetEntriesFast() > 0) {
+      //cout << maxdPhi << endl;
+      fHistMaxdPhi->Fill(maxdPhi);
+      if(isolated) {
+       fHistMaxdPhiIso->Fill(maxdPhi);
+       fHistMaxdPhiIsoPt->Fill(maxdPhi, maxdPhiPt/photon->Pt());
+      }
     }
   }
 }
index 62193070a3d58a32b2028d5521630010cdf55322..70d606b192bd18ad69a2ebda6ee73eaf0eb66036 100644 (file)
@@ -7,6 +7,7 @@
 class TH1F;\r
 class AliESDEvent;\r
 class AliGammaConversionAODObject;\r
+class AliAODConversionParticle;\r
 class AliAODPWG4ParticleCorrelation;\r
 class AliAODPWG4Particle;\r
 class TClonesArray;\r
@@ -15,17 +16,19 @@ class TString;
 #include "AliAnalysisTaskSE.h"\r
 \r
 class AliAnalysisTaskGammaJet : public AliAnalysisTaskSE {\r
- public:\r
+\r
+public:\r
+  \r
   AliAnalysisTaskGammaJet(); \r
   AliAnalysisTaskGammaJet(const char *name);\r
-  virtual ~AliAnalysisTaskGammaJet() {}\r
+  virtual ~AliAnalysisTaskGammaJet();\r
   \r
   virtual void   UserCreateOutputObjects();\r
   virtual void   UserExec(Option_t *option);\r
   virtual void   Terminate(Option_t *);\r
 \r
   void SetDeltaAODFileName(TString string) { fDeltaAODFileName = string;}\r
-  //Move all of these somewhere\r
\r
   inline Float_t GetMinPt() const { return fMinPt;} \r
   void SetMinPt( const Float_t pt ) { fMinPt = pt; }\r
   inline Float_t GetConeSize () const { return fConeSize; }\r
@@ -33,9 +36,6 @@ class AliAnalysisTaskGammaJet : public AliAnalysisTaskSE {
   inline Float_t GetPtThreshold () const { return fPtThreshold; }\r
   void SetPtThreshold ( Float_t ptt ) { fPtThreshold = ptt; }\r
  \r
-\r
-\r
-\r
   \r
  private:\r
 \r
@@ -52,7 +52,8 @@ class AliAnalysisTaskGammaJet : public AliAnalysisTaskSE {
   AliAODPWG4ParticleCorrelation * PWG4PartFromGammaConvAODObject(AliGammaConversionAODObject * gcObject, TString detector);\r
 \r
   //Fill AOD tree with PWG4 particles\r
-  void FillPWG4PartCorrBranch( TClonesArray * gcBranch, TClonesArray * partCorrBranch, TString detector);\r
+  AliAODPWG4ParticleCorrelation * AddToAOD(AliGammaConversionAODObject * aodO, TClonesArray * branch, TString detector);\r
+  AliAODPWG4ParticleCorrelation * AddToAOD(AliAODConversionParticle * aodO, TClonesArray * branch, TString detector);\r
   \r
   //Is particle isolated\r
   Bool_t IsIsolated( AliAODPWG4Particle * particle, TClonesArray * tracks, Float_t coneSize, Float_t ptThreshold);\r
@@ -66,6 +67,7 @@ class AliAnalysisTaskGammaJet : public AliAnalysisTaskSE {
   //Correlate particle with jets\r
   void CorrelateWithJets(AliAODPWG4ParticleCorrelation * photon, const TClonesArray * const jets);\r
   void CorrelateWithJets(AliAODPWG4Particle * photon, const TClonesArray * const jets, Bool_t const isolated);\r
+  void CorrelateWithHadrons(AliAODPWG4Particle * photon, const TClonesArray * tracks, Bool_t const isolated);\r
 \r
   //Is eta - phi distance smaller than conesize ?\r
   inline Bool_t IsInCone(Float_t dEta, Float_t dPhi, Float_t coneSize) {   \r
@@ -76,12 +78,25 @@ class AliAnalysisTaskGammaJet : public AliAnalysisTaskSE {
   TH1F        *fHistPt; //! Pt spectrum\r
   TH1F        *fHistPtPhos; //! Pt spectrum\r
   TH1F        *fHistPtEmcal; //! Pt spectrum\r
+\r
+  TH1F        *fHistPhotPhi;\r
+  TH1F        *fHistHadPhi;\r
+  TH1F        *fHistJetPhi;\r
+\r
+\r
   TH1F        *fHistPtJets; //! Pt spectrum\r
   TH1F        *fHistGammaJets; //!Phi correlations\r
   TH1F        *fHistGammaJetsIso; //!Phi correlations\r
   TH1F        *fHistMaxdPhi; //!Phi correlations\r
   TH1F        *fHistMaxdPhiIso; //!Phi correlations\r
   TH1F        *fHistMaxdPhiIsoPt; //!Phi correlations\r
+\r
+  TH1F        *fHadHistPt; //! Pt spectrum\r
+  TH1F        *fHadHistdPhi; //!Phi correlations\r
+  TH1F        *fHadHistdPhiIso; //!Phi correlations\r
+  TH1F        *fHadHistMaxdPhi; //!Phi correlations\r
+  TH1F        *fHadHistMaxdPhiIso; //!Phi correlations\r
+  TH1F        *fHadHistMaxdPhiIsoPt; //!Phi correlations\r
   \r
   \r
   Float_t fMinPt; //Minimum pt for correlation\r
index 25da22c6d760a92aa12af1f17ba53c291cb2de0a..8e43bc9c722e26f0ce09919b3bef16c041ff1160 100644 (file)
@@ -13,5 +13,5 @@
 #pragma link C++ class AliGammaConversionBGHandler+;
 #pragma link C++ class AliAnalysisTaskGammaJet+;
 #pragma link C++ class AliAnalysisTaskGammaConvDalitz+;
-
+#pragma link C++ class AliAnalysisTaskGCPartToPWG4Part+;
 #endif