ROOT logo
// -*- mode: C++ -*- 
#ifndef ALIMIXEDEVENT_H
#define ALIMIXEDEVENT_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */


/* $Id$ */

//-------------------------------------------------------------------------
//                          Class AliMixedEvent
// VEvent which is the container of several VEvents 
// Use Case: Event Mixing     
// Origin: Andreas Morsch, CERN, Andreas.Morsch@cern.ch 
//-------------------------------------------------------------------------

#include "AliVEvent.h"
#include <TList.h>
#include <TObjArray.h>
class AliCentrality;
class AliEventplane;
class AliVVertex;

class AliMixedEvent : public AliVEvent {

public:
    
    AliMixedEvent();
    virtual ~AliMixedEvent() ;
    AliMixedEvent(const AliMixedEvent& vEvnt); 
    AliMixedEvent& operator=(const AliMixedEvent& vEvnt);
    
    // Services from VEvent
    virtual void AddObject(TObject* /*obj*/) {;}
    virtual TObject* FindListObject(const char* /*name*/) const {return 0;}
    virtual TList* GetList() const {return 0;}
    virtual void CreateStdContent() {;}
    virtual void GetStdContent() {;}
    virtual void ReadFromTree(TTree* /*tree*/, Option_t* /*opt*/) {;} 
    virtual void WriteToTree(TTree* /*tree*/) const {;}
    virtual void SetStdNames() {;} 
    virtual void Print(Option_t * /*option*/) const  {;} 
    // Specific Services
    virtual void AddEvent(AliVEvent* evt);
    virtual void SetPrimaryVertex(AliVVertex* newVertex) {fMeanVertex = newVertex;}
    virtual void Reset();
    virtual void Init();
    const AliVVertex* GetEventVertex(Int_t i) const;
    const AliVVertex* GetVertexOfEvent(Int_t i) const;
    Int_t        GetNumberOfEvents() {return fNEvents;}      
  
    // Header
    virtual AliVHeader* GetHeader() const {return 0;}

    // Delegated methods for fESDRun or AODHeader
  
    virtual void     SetRunNumber(Int_t /*n*/)         {;} 
    virtual void     SetPeriodNumber(UInt_t /*n*/)     {;} 
    virtual void     SetMagneticField(Double_t /*mf*/) {;} 
    
    virtual Int_t    GetRunNumber()     const  {return -999 ;} 
    virtual UInt_t   GetPeriodNumber()  const  {return    0 ;} 
    virtual Double_t GetMagneticField() const;
    
    
    virtual Double_t GetDiamondX() const {return -999.;}
    virtual Double_t GetDiamondY() const {return -999.;}
    virtual void     GetDiamondCovXY(Float_t cov[3]) const
	{cov[0]=-999.; return;}
  
  // Delegated methods for fHeader
    virtual void      SetOrbitNumber(UInt_t /*n*/)        {;} 
    virtual void      SetBunchCrossNumber(UShort_t /*n*/) {;}
    virtual void      SetEventType(UInt_t /*eventType*/)  {;}
    virtual void      SetTriggerMask(ULong64_t /*n*/)     {;}
    virtual void      SetTriggerCluster(UChar_t /*n*/)    {;}

    virtual UInt_t    GetOrbitNumber()      const  {return    0;}
    virtual UShort_t  GetBunchCrossNumber() const  {return    0;}
    virtual UInt_t    GetEventType()        const  {return    0;}
    virtual ULong64_t GetTriggerMask()      const  {return    0;}
    virtual UChar_t   GetTriggerCluster()   const  {return    0;}
    virtual TString   GetFiredTriggerClasses() const {return    ("");}     

    virtual Double_t  GetZDCN1Energy()            const {return -999.;}
    virtual Double_t  GetZDCP1Energy()            const {return -999.;}
    virtual Double_t  GetZDCN2Energy()            const {return -999.;}
    virtual Double_t  GetZDCP2Energy()            const {return -999.;}
    virtual Double_t  GetZDCEMEnergy(Int_t /*i*/) const {return -999.;}
 
  // Tracks
    virtual AliVParticle *GetTrack(Int_t i)    const;
    virtual Int_t        GetNumberOfTracks()   const {return fNumberOfTracks;}
    virtual Int_t        GetNumberOfV0s()      const {return -999;}
    virtual Int_t        GetNumberOfCascades() const {return -999;}
  
    // Calo Clusters and cells
  virtual AliVCluster *GetCaloCluster(Int_t i)     const;
  virtual Int_t        GetNumberOfCaloClusters()   const {return fNumberOfCaloClusters;}
  virtual AliVCaloCells *GetPHOSCells()            const {return fPHOSCells;}
  virtual AliVCaloCells *GetEMCALCells()           const {return fEMCALCells;}
  virtual Int_t        GetNumberOfPHOSCells()      const {return fNumberOfPHOSCells;}
  virtual Int_t        GetNumberOfEMCALCells()     const {return fNumberOfEMCALCells;}
  virtual Int_t*       GetPHOSCellsCumul()         const {return fNPHOSCellsCumul;} 
  virtual Int_t*       GetEMCALCellsCumul()        const {return fNEMCALCellsCumul;} 
  virtual Int_t        GetNCaloClustersCumul(Int_t iev) const {return fNCaloClustersCumul[iev];}


  virtual Int_t        EventIndex(Int_t itrack) const;
  virtual Int_t        EventIndexForCaloCluster(Int_t iclu) const;
  virtual Int_t        EventIndexForPHOSCell(Int_t icell) const;
  virtual Int_t        EventIndexForEMCALCell(Int_t icell) const;

  virtual AliCentrality* GetCentrality() {return 0;}
  virtual AliEventplane* GetEventplane() {return 0;}
  // Primary vertex
    using AliVEvent::GetPrimaryVertex;
    virtual const AliVVertex   *GetPrimaryVertex() const {return fMeanVertex;}
    virtual Bool_t ComputeVtx(const TObjArray *vertices, Double_t *pos,Double_t *sig,Int_t *nContributors);
  // VZERO
  virtual AliVVZERO *GetVZEROData() const {return 0;}
  virtual AliVZDC     *GetZDCData() const {return 0;}
  virtual EDataLayoutType GetDataLayoutType() const;
private:
  TList   fEventList;            //! List of Events
  Int_t   fNEvents;              //! Number of Events 
  Int_t   fNumberOfTracks;       //! Total number of tracks
  Int_t   fNumberOfCaloClusters; //! Total number of calo clusters
  Int_t   fNumberOfPHOSCells;    //! Total number of PHOS Cells
  Int_t   fNumberOfEMCALCells;   //! Total number of EMCAL Cells
  Int_t*  fNTracksCumul;         //! Cumulant
  Int_t*  fNCaloClustersCumul;   //! Cumulant
  Int_t*  fNPHOSCellsCumul;      //! Cumulant
  Int_t*  fNEMCALCellsCumul;     //! Cumulant
  AliVCaloCells* fPHOSCells;     //! array ofPHOS cells  
  AliVCaloCells* fEMCALCells;    //! array ofPHOS cells  
  AliVVertex* fMeanVertex;    //! Mean vertex
    
    ClassDef(AliMixedEvent, 0)  // Container for mixed events
};
#endif 

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