ROOT logo
//-------------------------------------------------------------------------
//    Description: 
//    This class is abstact (interface) base class for different classes 
//    used for track-by-track data analysis in AliAnalysisTaskLRC
//    Origin: Andrey Ivanov (SPbSU-CERN) anivanov@cern.ch, 
//    Igor Altsybeev (SPbSU-CERN) 
//-------------------------------------------------------------------------
/*  See cxx source for full Copyright notice */

#ifndef ALILRCBASE_H
#define ALILRCBASE_H

#include <TObject.h>



// Include
class TList;
class AliLRCBase: public TObject
{
public:	
	/*enum LRCparticleType
	{
		kLRCany = -1,
		kLRCother = 0,
		kLRCelectron,
		kLRCmuon,
		kLRCpion,
		kLRCkaon,
		kLRCproton,		
	};
		
	enum LRCpidFillCondition
	{
		kLRCpidIgnored,
		kLRCpidForBackwardOnly,
		kLRCpidForForwardOnly,
		kLRCpidForBoth,
	};*/


    // Constructors
    AliLRCBase(): TObject() {}; // Constructor

    // Destructor
    virtual ~AliLRCBase(){};

    virtual Bool_t InitDataMembers() = 0; //Is to be called in CreateOutputObjects method

    // Setters
    virtual  void SetOutputSlotNumber(Int_t SlotNumber) = 0; // Sets number of output slot for LRCProcessor
    //	virtual  void SetPrintInfo( Bool_t _flagPrintInfo )  = 0; // Print info flag

    // Getters
    virtual void GetETAWindows(Double_t &_StartForwardETA,Double_t &_EndForwardETA,Double_t &_StartBakwardETA,Double_t &_EndBakwardETA) = 0;
    virtual void GetPhiWindows(Double_t &_StartForwardPhi,Double_t &_EndForwardPhi,Double_t &_StartBakwardPhi,Double_t &_EndBakwardPhi) = 0;
    virtual TList* CreateOutput() const 	= 0 ; // Creates output object
    virtual TString GetShortDef() const 	= 0  ; // Returns fShortDef value
    virtual Int_t GetOutputSlotNumber() const = 0 ; // Returns number of output slot for LRCProcessor

    // Track by track event import
    virtual void StartEvent() 	= 0;  // Open new Event for track by track event import
    virtual void FinishEvent(Bool_t kDontCount = kFALSE) 	= 0; // Close opened event

    virtual void SetETAWindows( Double_t _StartForwardETA, Double_t _EndForwardETA, Double_t _StartBackwardETA, Double_t _EndBackwardETA ) = 0; // Sets both forward and backward

    virtual void AddTrackPtEta( Double_t Pt, Double_t Eta, Double_t Phi, Short_t Charge = 100, Int_t particleType = -1  )	= 0; // Imports track from the event
    virtual void AddTrackForward( Double_t Pt, Double_t Eta, Double_t Phi, Short_t Charge, Int_t particleType  ) 	= 0; // Imports track to the event directly to Forward window
    virtual void AddTrackBackward( Double_t Pt, Double_t Eta, Double_t Phi, Short_t Charge, Int_t particleType   ) 	= 0; // Imports track to the event directly to Backward window
    virtual void AddTrackPtEtaMixing( Int_t winFB, Double_t Pt, Double_t Eta ,Double_t Phi, Short_t Charge, Int_t particleType = -1 ) = 0;

    virtual void SetEventCentrality(Double_t centrality) = 0;
    virtual void SetEventPlane(Double_t eventPlane) = 0;

    virtual void SetParticleType( char* strForwardOrBackward, char* strPid ) = 0;

    virtual void SetForwardWindowPhi(Double_t StartForwardPhi,Double_t EndForwardPhi) = 0;
    virtual void SetBackwardWindowPhi(Double_t StartBackwardPhi,Double_t EndBackwardPhi) = 0;
 
    virtual  void SetHistPtRange(Double_t LoPt,Double_t HiPt,Int_t PtBins) = 0;  // Sets range for Pt histos axis

    virtual void   Terminate() = 0; //was done for yield study

	//virtual void SetPidFillCondition( LRCparticleType particleType, LRCpidFillCondition fillCond ) 
	//	{ fPidFillCondition = fillCond; 
	//		fWhichParticleToProcess = particleType; }  // how to fill bckwd and fwd hists by pid

    //void SetParticleTypeToFill( LRCparticleType particleType ) { fWhichParticleToProcess = particleType; }  // which particle type in this processor is considered

//protected:
	//LRCparticleType fWhichParticleToProcess; // ! LRC processor sense only this type of particles (-1 by default)
	//LRCpidFillCondition fPidFillCondition;
private:

    virtual  void SetShortDef()	=0;  // Sets fShortDef according to window paramiters

    AliLRCBase(const AliLRCBase&); // not implemented
    AliLRCBase& operator=(const AliLRCBase&); // not implemented



    ClassDef(AliLRCBase, 1);
};

#endif

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