ROOT logo
/* This file is property of and copyright                                 *
 * ALICE Experiment at CERN, All rights reserved.                         *
 * See cxx source for full Copyright notice                               */

/// @file   AliAnalysisTaskGammaJet.h
/// @author Svein Lindal
/// @brief  Class used to run isolation studies of conversion gamma/pions
 

#ifndef ALIANACONVISOLATION_CXX
#define ALIANACONVISOLATION_CXX

#include <iostream>
#include "TObject.h"
#include "Rtypes.h"
#include "TF1.h"
#include <TMath.h>
class TH2F;
class TH1F;
class AliAODConversionPhoton;
class AliAODConversionParticle;
class TClonesArray;
class TList;

using namespace std;

class AliAnaConvIsolation : public TObject {

public:
  
  AliAnaConvIsolation(); 
  AliAnaConvIsolation(Float_t coneSize, Float_t maxPtThreshold, Float_t sumPtThreshold, Float_t maxPtFraction, Float_t sumPtFraction);
  virtual ~AliAnaConvIsolation();
  

  //void CreateHistograms();


  ///Set And get cone size
  void SetConeSize(Float_t cs) {fConeSize = cs*cs;}
  Float_t GetConeSize() const {return TMath::Sqrt(fConeSize);}


  //Set and get max pt threshold
  void SetMaxPtThreshold(Float_t cs) {fMaxPtThreshold = cs;}
  Float_t GetPtThreshold() const {return fMaxPtThreshold;}


  //Set and get sum pt threshold
  void SetSumPtThreshold(Float_t cs) {fSumPtThreshold = cs;}
  Float_t GetPtSumThreshold() const {return fSumPtThreshold;}

  //Set and get max Pt fraction threshold
  void SetMaxPtFraction(Float_t cs) {fMaxPtFraction = cs;}
  Float_t GetPtFraction() const {return fMaxPtFraction;}

  //Set and get sum pt fraction threshold
  void SetSumPtFraction(Float_t cs) {fSumPtFraction = cs;}
  Float_t GetPtSumFraction() const {return fSumPtFraction;}

  //Set min pt for a particle to be counted in bg
  void SetMinPt( Float_t minpt) {fMinPt = minpt; }

  //Get isolation curve
  TF1 * GetIsolationCurve() const { return fIsoCurve; }

  //Set function of isolation curve
  void SetIsolationCurve(TString  curve) { 
    fCurveFunction = curve;
  }

  Bool_t IsLeading(AliAODConversionParticle  * particle, const TObjArray * tracks, const TObjArray * aodParticles);


  //Fill histograms
  //void FillHistograms(Float_t pt, Float_t ptMax, Float_t ptSum, Bool_t isolated, Int_t nTracks);

  //Get list of histograms
  //TList * GetHistograms() const { return fHistograms;}

  //Is particle isolated
  Bool_t IsIsolated( const AliAODConversionPhoton * const particle, const TClonesArray * const tracks, Bool_t &leading);
  Bool_t IsIsolated( AliAODConversionPhoton * const particle, const TClonesArray * const tracks, const Int_t nSpawn, const Int_t * const spawn, Bool_t &leading );
  Int_t IsLeading(const AliAODConversionParticle * particle, const TObjArray * tracks, const Int_t * tIDs) const;

  //Is eta - phi distance smaller than conesize ?
  Bool_t IsInCone(Float_t dEta, Float_t dPhi, const Float_t coneSize) const {
	dPhi = (TMath::Abs(dPhi) < TMath::Pi()) ? dPhi : TMath::TwoPi() - TMath::Abs(dPhi); 
    return ( (dEta*dEta + dPhi*dPhi) < coneSize);
  }

 private:

  ///Evaluate whether particle is isolated according to criterie
  Bool_t EvaluateIsolationCriteria(Float_t ptSum, Float_t pt) const;

  TF1 * fIsoCurve; ///Curve defining if particle is isolated or not 
  TString fCurveFunction; ///Funtion defining curve

  Float_t fConeSize; //Size of isolation cone
  Float_t fMinPt; //min pt for bg particles
  Float_t fMaxPtThreshold; //max pt threshold
  Float_t fSumPtThreshold; //sum pt threhold
  Float_t fMaxPtFraction;  //max pt fraction threshold
  Float_t fSumPtFraction; //sum pt fraction threshold

  // TList * fHistograms; //list of histograms

  // TH2F * fhMaxPtInCone[2]; //histogram of max pt in cone
  // TH2F * fhSumPtInCone[2]; //histogram of sum pt in cone
  // TH2F * fhSumPtVsMaxPt[2];//sum pt vs max pt
  
  // // TH1F * fHistSumPt[2][2]; 
  // // TH1F * fHistMaxPt[2][2];
  
  // TH1F * fhPtCandidates[2]; //pt distribution of isolation candidates
  // TH1F * fhTrackMult[2];    //Track multiplicity of events with / wo isolated particles
  

  // Float_t fHistogramMaxPt; //Upper pt limit in histograms


  AliAnaConvIsolation(const AliAnaConvIsolation&); // not implemented
  AliAnaConvIsolation& operator=(const AliAnaConvIsolation&); // not implemented
  ClassDef(AliAnaConvIsolation, 2); // example of analysis
};

#endif
 AliAnaConvIsolation.h:1
 AliAnaConvIsolation.h:2
 AliAnaConvIsolation.h:3
 AliAnaConvIsolation.h:4
 AliAnaConvIsolation.h:5
 AliAnaConvIsolation.h:6
 AliAnaConvIsolation.h:7
 AliAnaConvIsolation.h:8
 AliAnaConvIsolation.h:9
 AliAnaConvIsolation.h:10
 AliAnaConvIsolation.h:11
 AliAnaConvIsolation.h:12
 AliAnaConvIsolation.h:13
 AliAnaConvIsolation.h:14
 AliAnaConvIsolation.h:15
 AliAnaConvIsolation.h:16
 AliAnaConvIsolation.h:17
 AliAnaConvIsolation.h:18
 AliAnaConvIsolation.h:19
 AliAnaConvIsolation.h:20
 AliAnaConvIsolation.h:21
 AliAnaConvIsolation.h:22
 AliAnaConvIsolation.h:23
 AliAnaConvIsolation.h:24
 AliAnaConvIsolation.h:25
 AliAnaConvIsolation.h:26
 AliAnaConvIsolation.h:27
 AliAnaConvIsolation.h:28
 AliAnaConvIsolation.h:29
 AliAnaConvIsolation.h:30
 AliAnaConvIsolation.h:31
 AliAnaConvIsolation.h:32
 AliAnaConvIsolation.h:33
 AliAnaConvIsolation.h:34
 AliAnaConvIsolation.h:35
 AliAnaConvIsolation.h:36
 AliAnaConvIsolation.h:37
 AliAnaConvIsolation.h:38
 AliAnaConvIsolation.h:39
 AliAnaConvIsolation.h:40
 AliAnaConvIsolation.h:41
 AliAnaConvIsolation.h:42
 AliAnaConvIsolation.h:43
 AliAnaConvIsolation.h:44
 AliAnaConvIsolation.h:45
 AliAnaConvIsolation.h:46
 AliAnaConvIsolation.h:47
 AliAnaConvIsolation.h:48
 AliAnaConvIsolation.h:49
 AliAnaConvIsolation.h:50
 AliAnaConvIsolation.h:51
 AliAnaConvIsolation.h:52
 AliAnaConvIsolation.h:53
 AliAnaConvIsolation.h:54
 AliAnaConvIsolation.h:55
 AliAnaConvIsolation.h:56
 AliAnaConvIsolation.h:57
 AliAnaConvIsolation.h:58
 AliAnaConvIsolation.h:59
 AliAnaConvIsolation.h:60
 AliAnaConvIsolation.h:61
 AliAnaConvIsolation.h:62
 AliAnaConvIsolation.h:63
 AliAnaConvIsolation.h:64
 AliAnaConvIsolation.h:65
 AliAnaConvIsolation.h:66
 AliAnaConvIsolation.h:67
 AliAnaConvIsolation.h:68
 AliAnaConvIsolation.h:69
 AliAnaConvIsolation.h:70
 AliAnaConvIsolation.h:71
 AliAnaConvIsolation.h:72
 AliAnaConvIsolation.h:73
 AliAnaConvIsolation.h:74
 AliAnaConvIsolation.h:75
 AliAnaConvIsolation.h:76
 AliAnaConvIsolation.h:77
 AliAnaConvIsolation.h:78
 AliAnaConvIsolation.h:79
 AliAnaConvIsolation.h:80
 AliAnaConvIsolation.h:81
 AliAnaConvIsolation.h:82
 AliAnaConvIsolation.h:83
 AliAnaConvIsolation.h:84
 AliAnaConvIsolation.h:85
 AliAnaConvIsolation.h:86
 AliAnaConvIsolation.h:87
 AliAnaConvIsolation.h:88
 AliAnaConvIsolation.h:89
 AliAnaConvIsolation.h:90
 AliAnaConvIsolation.h:91
 AliAnaConvIsolation.h:92
 AliAnaConvIsolation.h:93
 AliAnaConvIsolation.h:94
 AliAnaConvIsolation.h:95
 AliAnaConvIsolation.h:96
 AliAnaConvIsolation.h:97
 AliAnaConvIsolation.h:98
 AliAnaConvIsolation.h:99
 AliAnaConvIsolation.h:100
 AliAnaConvIsolation.h:101
 AliAnaConvIsolation.h:102
 AliAnaConvIsolation.h:103
 AliAnaConvIsolation.h:104
 AliAnaConvIsolation.h:105
 AliAnaConvIsolation.h:106
 AliAnaConvIsolation.h:107
 AliAnaConvIsolation.h:108
 AliAnaConvIsolation.h:109
 AliAnaConvIsolation.h:110
 AliAnaConvIsolation.h:111
 AliAnaConvIsolation.h:112
 AliAnaConvIsolation.h:113
 AliAnaConvIsolation.h:114
 AliAnaConvIsolation.h:115
 AliAnaConvIsolation.h:116
 AliAnaConvIsolation.h:117
 AliAnaConvIsolation.h:118
 AliAnaConvIsolation.h:119
 AliAnaConvIsolation.h:120
 AliAnaConvIsolation.h:121
 AliAnaConvIsolation.h:122
 AliAnaConvIsolation.h:123
 AliAnaConvIsolation.h:124
 AliAnaConvIsolation.h:125
 AliAnaConvIsolation.h:126
 AliAnaConvIsolation.h:127
 AliAnaConvIsolation.h:128