ROOT logo
#ifndef AliPHOSEmbedding_h
#define AliPHOSEmbedding_h

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

// Class to perform embedding on the AOD level
// Author: D.Peressounko

class TChain ;
class TClonesArray ;
class TH2F ;

class AliPHOSClusterizerv1 ;
class AliPHOSReconstructor ;
class AliAODEvent ;
class AliESDEvent ;
class AliESDtrack ;
class AliESDCaloCells ;

#include "AliAnalysisTaskSE.h"

class AliPHOSEmbedding : public AliAnalysisTaskSE {
public:
  AliPHOSEmbedding(const char *name = "AliPHOSEmbedding");
  virtual ~AliPHOSEmbedding() {}
  
  //Standard methods
  virtual void   UserCreateOutputObjects();
  virtual void   UserExec(Option_t *option);
  virtual void   Terminate(Option_t *){}
  
  //Chain with signal AOD for embedding
  void SetSignalChain(TChain * signal){fAODChain =signal;}

  //Calibration used in reconstruction of real data (ESDs)
  //If not set, assume same calibration as set by default
  void SetOldCalibration(TH2F **calib) ; 

private:
  AliPHOSEmbedding(const AliPHOSEmbedding&); // not implemented
  AliPHOSEmbedding& operator=(const AliPHOSEmbedding&); // not implemented

  void Init() ;
  void InitMF() ; //Mag.Field initialization for track matching
  void InitGeometry() ;
  
  AliAODEvent * GetNextSignalEvent(void) ;

  void CopyRecalibrateDigits(void) ;
  void MakeEmbedding(AliESDEvent * data, AliAODEvent * signal) ;
  void MakeDigits(AliAODEvent* signal) ;  

  //Convert ESD with embedded signal to AOD
  //First standard stuff
  void ConvertESDtoAOD(AliESDEvent *esd) ;
  void ConvertHeader(AliESDEvent &esd) ;
  void ConvertPrimaryVertices(const AliESDEvent &esd) ;
  void ConvertCaloClusters(const AliESDEvent &esd) ;
  void ConvertEMCALCells(const AliESDEvent &esd) ;
  void ConvertPHOSCells(const AliESDEvent &esd) ;
  
  //Add new branch
  void ConvertEmbeddedClusters(const AliESDEvent *esd) ;
  void ConvertEmbeddedCells(const AliESDEvent *esd) ;
  void ConvertMCParticles(const AliAODEvent *aod) ;

  Float_t TestCPV(Double_t dx, Double_t dz, Double_t pt, Int_t charge) ;
  

  TChain * fAODChain ; //Signal

  TTree * fDigitsTree ;  //! Digits
  TTree * fClustersTree; //! Clusters
  TTree * fTreeOut;      //Output AOD
  TClonesArray * fDigitsArr ; //!

  TClonesArray * fEmbeddedClusters ; //!
  AliAODCaloCells * fEmbeddedCells ; //!
  AliESDCaloCells * fCellsPHOS ; //! Old PHOS cells

  AliPHOSClusterizerv1 * fClusterizer ; //!
  AliPHOSReconstructor * fPHOSReconstructor ; //!
  
  TH2F * fOldPHOSCalibration[5] ; //! Calibration coeff. used in ESD production

  Int_t fNSignal ; // Number of signal evetns processed  
  Int_t fNCaloClustersOld ; //Number of CaloClusters already in ESD
  Bool_t fInitialized ; //!
  ClassDef(AliPHOSEmbedding, 1); // PHOS analysis task
};

#endif
 AliPHOSEmbedding.h:1
 AliPHOSEmbedding.h:2
 AliPHOSEmbedding.h:3
 AliPHOSEmbedding.h:4
 AliPHOSEmbedding.h:5
 AliPHOSEmbedding.h:6
 AliPHOSEmbedding.h:7
 AliPHOSEmbedding.h:8
 AliPHOSEmbedding.h:9
 AliPHOSEmbedding.h:10
 AliPHOSEmbedding.h:11
 AliPHOSEmbedding.h:12
 AliPHOSEmbedding.h:13
 AliPHOSEmbedding.h:14
 AliPHOSEmbedding.h:15
 AliPHOSEmbedding.h:16
 AliPHOSEmbedding.h:17
 AliPHOSEmbedding.h:18
 AliPHOSEmbedding.h:19
 AliPHOSEmbedding.h:20
 AliPHOSEmbedding.h:21
 AliPHOSEmbedding.h:22
 AliPHOSEmbedding.h:23
 AliPHOSEmbedding.h:24
 AliPHOSEmbedding.h:25
 AliPHOSEmbedding.h:26
 AliPHOSEmbedding.h:27
 AliPHOSEmbedding.h:28
 AliPHOSEmbedding.h:29
 AliPHOSEmbedding.h:30
 AliPHOSEmbedding.h:31
 AliPHOSEmbedding.h:32
 AliPHOSEmbedding.h:33
 AliPHOSEmbedding.h:34
 AliPHOSEmbedding.h:35
 AliPHOSEmbedding.h:36
 AliPHOSEmbedding.h:37
 AliPHOSEmbedding.h:38
 AliPHOSEmbedding.h:39
 AliPHOSEmbedding.h:40
 AliPHOSEmbedding.h:41
 AliPHOSEmbedding.h:42
 AliPHOSEmbedding.h:43
 AliPHOSEmbedding.h:44
 AliPHOSEmbedding.h:45
 AliPHOSEmbedding.h:46
 AliPHOSEmbedding.h:47
 AliPHOSEmbedding.h:48
 AliPHOSEmbedding.h:49
 AliPHOSEmbedding.h:50
 AliPHOSEmbedding.h:51
 AliPHOSEmbedding.h:52
 AliPHOSEmbedding.h:53
 AliPHOSEmbedding.h:54
 AliPHOSEmbedding.h:55
 AliPHOSEmbedding.h:56
 AliPHOSEmbedding.h:57
 AliPHOSEmbedding.h:58
 AliPHOSEmbedding.h:59
 AliPHOSEmbedding.h:60
 AliPHOSEmbedding.h:61
 AliPHOSEmbedding.h:62
 AliPHOSEmbedding.h:63
 AliPHOSEmbedding.h:64
 AliPHOSEmbedding.h:65
 AliPHOSEmbedding.h:66
 AliPHOSEmbedding.h:67
 AliPHOSEmbedding.h:68
 AliPHOSEmbedding.h:69
 AliPHOSEmbedding.h:70
 AliPHOSEmbedding.h:71
 AliPHOSEmbedding.h:72
 AliPHOSEmbedding.h:73
 AliPHOSEmbedding.h:74
 AliPHOSEmbedding.h:75
 AliPHOSEmbedding.h:76
 AliPHOSEmbedding.h:77
 AliPHOSEmbedding.h:78
 AliPHOSEmbedding.h:79
 AliPHOSEmbedding.h:80
 AliPHOSEmbedding.h:81
 AliPHOSEmbedding.h:82
 AliPHOSEmbedding.h:83
 AliPHOSEmbedding.h:84
 AliPHOSEmbedding.h:85
 AliPHOSEmbedding.h:86
 AliPHOSEmbedding.h:87
 AliPHOSEmbedding.h:88
 AliPHOSEmbedding.h:89
 AliPHOSEmbedding.h:90
 AliPHOSEmbedding.h:91
 AliPHOSEmbedding.h:92
 AliPHOSEmbedding.h:93