ROOT logo
// -*- mode: C++ -*- 
#ifndef ALIAODMCHEADER_H
#define ALIAODMCHEADER_H

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

//-------------------------------------------------------------------------
//                      Class AliAODMCHeader
//   Some MC specific inforamtion for filtering KINE infomration to the AOD   
//   Origin: Christian Klein-Boesing, CERN, Christian.Klein-Boesing@cern.ch 
//-------------------------------------------------------------------------

class AliGenEventHeader;

#include "AliVHeader.h"
#include "TList.h"

class AliAODMCHeader: public AliVHeader {
public:
  AliAODMCHeader();
  virtual ~AliAODMCHeader();
  AliAODMCHeader(const AliAODMCHeader& header);
  AliAODMCHeader& operator=(const AliAODMCHeader& header);
  virtual void Copy(TObject &obj) const;

  virtual void      SetGeneratorName(const char* c){fGenerator = c;}
  virtual void      AddGeneratorName(const char* c);
  virtual const char* GetGeneratorName() const {return fGenerator.Data();}

  virtual void SetVertex(Double_t *vtx){
    fVertex[0] = vtx[0]; fVertex[1] = vtx[1]; fVertex[2] = vtx[2];
  }
  virtual void SetVertex(Double_t x,Double_t y,Double_t z){
    fVertex[0] = x; fVertex[1] = y; fVertex[2] = z;
  }
  virtual void GetVertex(Double_t *vtx) const {
    vtx[0] = fVertex[0]; vtx[1] = fVertex[1]; vtx[2] = fVertex[2];
  }

  virtual Double_t GetVtxX() const { return fVertex[0]; }
  virtual Double_t GetVtxY() const { return fVertex[1]; }
  virtual Double_t GetVtxZ() const { return fVertex[2]; }

  
  virtual void      SetImpactParameter(Double_t b){fImpactPar = b;}
  virtual Double_t  GetImpactParameter() const {return fImpactPar;}

  virtual void      SetPtHard(Double_t f){fPtHard = f;}
  virtual Double_t  GetPtHard() const {return fPtHard;}

  virtual void      SetCrossSection(Double_t f){fXsection = f;}
  virtual Double_t  GetCrossSection() const {return fXsection;}

  virtual void      AddTrial(Int_t i) {fTrials+=i;}
  virtual void      SetTrials(Int_t f){fTrials = f;}
  virtual Int_t     GetTrials() const {return fTrials;}

  virtual void      SetReactionPlaneAngle(Double_t b){fReactionPlaneAngle = b;}
  virtual Double_t  GetReactionPlaneAngle() const {return fReactionPlaneAngle;}

  virtual void      SetEventType(UInt_t eventType){fEventType = eventType;}
  virtual UInt_t    GetEventType() const {return fEventType;}

  virtual void      Reset();
  virtual void      Print(const Option_t *opt=0) const;

  // needed to make class non virtual
  virtual UShort_t  GetBunchCrossNumber()   const {return 0;}
  virtual UInt_t    GetOrbitNumber()        const {return 0;}
  virtual UInt_t    GetPeriodNumber()       const {return 0;}
  virtual ULong64_t GetTriggerMask()        const {return 0;}
  virtual UChar_t   GetTriggerCluster()     const {return 0;}
  // 
  
  // Access to header informations

  virtual void AddCocktailHeader(const AliGenEventHeader* header);
  virtual void AddCocktailHeaders(AliGenEventHeader* header);
  virtual AliGenEventHeader* GetCocktailHeader(Int_t i);
  virtual TList* GetCocktailHeaders(){return fHeaders;}
  virtual UInt_t GetNCocktailHeaders(){
    if(fHeaders)return fHeaders->GetEntries();
    return 0;
  }

  static const char* StdBranchName(){return fgkStdBranchName.Data();}

private:

  static TString fgkStdBranchName;      // Standard branch name

  // General event information

  TString      fGenerator;         // Name of the generator, combination of names in case of gen cocktail 
  Double32_t   fVertex[3];         // MC vertex
  Double32_t   fImpactPar;         // Impact parameter in case of Pb+Pb
  Double32_t   fPtHard;            // [0,0,12] Pt hard for jet events
  Double32_t   fXsection;          // Cross section for particlar process
  UInt_t       fTrials;            // Number of trials
  UInt_t       fEventType;         // MC Process Type of Event
  Double32_t   fReactionPlaneAngle;// MC Reaction Plane Angle

  // more details in the headers
  TList  *fHeaders;                // List of all MC Headers 

  ClassDef(AliAODMCHeader,6)

};

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