#include "T49Mixer.h"

T49Mixer


class description - source file - inheritance tree (.pdf)

class T49Mixer : public TObject

Inheritance Chart:
TObject
<-
T49Mixer

    protected:
Bool_t CheckBound1(Int_t m) Bool_t CheckBound2(Int_t m) Int_t GetUsedUniqueIDXP1(Int_t Idx) Int_t GetUsedUniqueIDXP1x2(Int_t Idx) Int_t GetUsedUniqueIDXP2(Int_t Idx) Int_t GetUsedUniqueIDXP2x1(Int_t Idx) void Init101() void InitRnd() Int_t NofFreeP1x2() Int_t NofFreeP2x1() void SetNUsedAfterReplaceP1(Int_t idx) void SetNUsedAfterReplaceP2(Int_t idx) void SetNUsedUniqueP1(Int_t idx1) void SetNUsedUniqueP1x2(Int_t idx1) void SetNUsedUniqueP2(Int_t idx1) void SetNUsedUniqueP2x1(Int_t idx2) void SetUsedUniqueIDXP1(Int_t Idx1, Int_t Idx2) void SetUsedUniqueIDXP1x2(Int_t Idx1, Int_t Idx2) void SetUsedUniqueIDXP2(Int_t Idx1, Int_t Idx2) void SetUsedUniqueIDXP2x1(Int_t Idx1, Int_t Idx2) void SetUsedUniqueP1(Int_t idx1) void SetUsedUniqueP1x2(Int_t idx1) void SetUsedUniqueP2(Int_t idx1) void SetUsedUniqueP2x1(Int_t idx2) Bool_t UsedPairP1P1(Int_t idx) Bool_t UsedPairP1P2(Int_t idx) Bool_t UsedPairP2P2(Int_t idx) Bool_t UsedUniqueP1(Int_t idx1) Bool_t UsedUniqueP1x2(Int_t idx1) Bool_t UsedUniqueP2(Int_t idx1) Bool_t UsedUniqueP2x1(Int_t idx2) public:
T49Mixer(Int_t n = 100) T49Mixer(Int_t n1, Int_t n2) T49Mixer(const T49Mixer&) ~T49Mixer() void AddEvent(TObject* Obj) void AddEvent(TObject* Obj1, TObject* Obj2) Int_t AddOne(TObject* Obj) Int_t AddToP1(TObject* Obj) Bool_t AddToP1P2(TObject* Obj1, TObject* Obj2) Int_t AddToP2(TObject* Obj) void AllUsedReset() void AllUsedResetP1() void AllUsedResetP2() Bool_t CH1(Int_t i, Int_t j) Bool_t CH2(Int_t i, Int_t j) Bool_t CH3(Int_t i, Int_t j) static TClass* Class() void ClearMixer() void ClearPool1() void ClearPool2() void ClearPools() void CloseWindows() void ClrLACode() void CopyClose() void Copyright(Int_t opt = 0) void DumpMixer() void DumpP1P1() void DumpP1P1P2P2() void DumpP1P2() void DumpP2P2() void ExitShow() void GetEvent() void GetEvent(int i, int j) void GetEventP1() void GetEventP1(Int_t i, Int_t j) void GetEventP12() void GetEventP12(int i, int j) void GetEventP12X() void GetEventP12X(int i, int j) void GetEventP1X() void GetEventP1X(Int_t i, Int_t j) void GetEventP2() void GetEventP2(int i, int j) void GetEventP2X() void GetEventP2X(int i, int j) void GetEventX() void GetEventX(int i, int j) TObject* GetFromP1() TObject* GetFromP1At(Int_t idx) TObject* GetFromP2() TObject* GetFromP2At(Int_t idx) TObject* GetFromPool1(Int_t& idx) TObject* GetFromPool2(Int_t& idx) Char_t* GetLACName(Int_t LA) Int_t GetLACode() Int_t GetLACPair() Int_t GetLACUniPair() Char_t* GetLAname() Int_t GetLastP1Call() Bool_t GetLastP1P1(Int_t& Idx1, Int_t& Idx2) Bool_t GetLastP1P2(Int_t& Idx1, Int_t& Idx2) Int_t GetLastP2Call() Bool_t GetLastP2P2(Int_t& Idx1, Int_t& Idx2) Bool_t GetLastUniP1P1(Int_t& Idx1, Int_t& Idx2) Bool_t GetLastUniP1P2(Int_t& Idx1, Int_t& Idx2) Bool_t GetLastUniP2P2(Int_t& Idx1, Int_t& Idx2) TObject* GetNuOne() TObject* GetNuOneP1() TObject* GetNuOneP2() Bool_t GetNuPair(TObject** Obj1, TObject** Obj2) Bool_t GetNuPairP1P1(TObject** Obj1, TObject** Obj2) Bool_t GetNuPairP1P2(TObject** Obj1, TObject** Obj2) Bool_t GetNuPairP2P2(TObject** Obj1, TObject** Obj2) TObject* GetNuROne() TObject* GetNuROneP1() TObject* GetNuROneP2() Bool_t GetNuRPair(TObject** Obj1, TObject** Obj2) Bool_t GetNuRPairP1P1(TObject** Obj1, TObject** Obj2) Bool_t GetNuRPairP1P2(TObject** Obj1, TObject** Obj2) Bool_t GetNuRPairP2P2(TObject** Obj1, TObject** Obj2) TObject* GetOne() TObject* GetOneAt(Int_t idx) Int_t GetP1P2Mode() Bool_t GetPairAt(TObject** Obj1, TObject** Obj2, Int_t idx1, Int_t idx2) Bool_t GetPairP1P1At(TObject** Obj1, TObject** Obj2, Int_t idx1, Int_t idx2) Bool_t GetPairP1P2At(TObject** Obj1, TObject** Obj2, Int_t idx1, Int_t idx2) Bool_t GetPairP2P2At(TObject** Obj1, TObject** Obj2, Int_t idx1, Int_t idx2) TObject* GetPart1List() TObject* GetPart1ListP1() TObject* GetPart1ListP12() TObject* GetPart1ListP2() TObject* GetPart2List() TObject* GetPart2ListP1() TObject* GetPart2ListP12() TObject* GetPart2ListP2() Bool_t GetRPair(TObject** Obj1, TObject** Obj2) Bool_t GetRPairP1P1(TObject** Obj1, TObject** Obj2) Bool_t GetRPairP1P1x(TObject** Obj1, TObject** Obj2) Bool_t GetRPairP1P2(TObject** Obj1, TObject** Obj2) Bool_t GetRPairP1P2x(TObject** Obj1, TObject** Obj2) Bool_t GetRPairP2P2(TObject** Obj1, TObject** Obj2) Bool_t GetRPairP2P2x(TObject** Obj1, TObject** Obj2) Bool_t GetRUniquePair(TObject** Obj1, TObject** Obj2) Bool_t GetRUniquePairP1P1(TObject** Obj1, TObject** Obj2) Bool_t GetRUniquePairP1P2(TObject** Obj1, TObject** Obj2) Bool_t GetRUniquePairP2P2(TObject** Obj1, TObject** Obj2) Bool_t GetUniquePair(TObject** Obj1, TObject** Obj2) Bool_t GetUniquePairP1P1(TObject** Obj1, TObject** Obj2) Bool_t GetUniquePairP1P2(TObject** Obj1, TObject** Obj2) Bool_t GetUniquePairP2P2(TObject** Obj1, TObject** Obj2) void InitStyle() virtual TClass* IsA() const Bool_t IsFull() Bool_t IsReady() Int_t NofFree() Int_t NofFreeP1() Int_t NofFreeP2() Int_t NofFreePairs() Int_t NofFreePairsP1P1() Int_t NofFreePairsP1P2() Int_t NofFreePairsP2P2() Int_t NofFreeUniquePairs() Int_t NofFreeUniquePairsP1P1() Int_t NofFreeUniquePairsP1P2() Int_t NofFreeUniquePairsP2P2() Int_t NofObjects() Int_t NofObjectsP1() Int_t NofObjectsP2() Int_t NofPairs() Int_t NofPairsP1P1() Int_t NofPairsP1P2() Int_t NofPairsP2P2() Int_t NofUniquePairs() Int_t NofUniquePairsP1P1() Int_t NofUniquePairsP1P2() Int_t NofUniquePairsP2P2() Int_t NofUsed() Int_t NofUsedP1() Int_t NofUsedP2() Int_t NofUsedPairs() Int_t NofUsedPairsP1P1() Int_t NofUsedPairsP1P2() Int_t NofUsedPairsP2P2() Int_t NofUsedUniquePairs() Int_t NofUsedUniquePairsP1P1() Int_t NofUsedUniquePairsP1P2() Int_t NofUsedUniquePairsP2P2() T49Mixer& operator=(const T49Mixer&) Bool_t Pool1Full() Bool_t Pool2Full() Bool_t PoolsFull() void PurgeMixer() void PurgePool1() void PurgePool2() void PurgePools() Int_t PutOne(TObject* Obj) void PutToMixer(TObject* T1, TObject* T2) Int_t PutToP1(TObject* Obj) Bool_t PutToP1P2(TObject* Obj1, TObject* Obj2) Int_t PutToP2(TObject* Obj) Int_t ReplaceInP1(TObject* Obj) Int_t ReplaceInP1At(TObject* Obj, Int_t idx) Bool_t ReplaceInP1P2(TObject* Obj1, TObject* Obj2) Bool_t ReplaceInP1P2At(TObject* Obj1, TObject* Obj2, Int_t idx1, Int_t idx2) Int_t ReplaceInP2(TObject* Obj) Int_t ReplaceInP2At(TObject* Obj, Int_t idx) Int_t ReplaceOne(TObject* Obj) Int_t ReplaceOneAt(TObject* Obj, Int_t idx) void ResetAllPxPx() void ResetAllUniPxPx() void ResetMixer() void ResetP1P1() void ResetP1P1_P2P2() void ResetP1P2() void ResetP2P2() void ResetUniP1P1() void ResetUniP1P2() void ResetUniP2P2() void ResetUP1() void ResetUP2() void SetMixer(TObjArray* A1, TObjArray* A2) void SetNUsedOneP1(Int_t idx) void SetNUsedOneP2(Int_t idx) void SetNUsedPairP1P1(Int_t idx1, Int_t idx2) void SetNUsedPairP1P2(Int_t idx1, Int_t idx2) void SetNUsedPairP2P2(Int_t idx1, Int_t idx2) void SetP1P2Mode(Int_t m = 0) Bool_t SetPool1(TObjArray* ObjArray) Bool_t SetPool2(TObjArray* ObjArray) Bool_t SetPools(TObjArray* ObjA1, TObjArray* ObjA2) void SetUsedOneP1(Int_t idx) void SetUsedOneP2(Int_t idx) void SetUsedPairP1P1(Int_t idx1, Int_t idx2) void SetUsedPairP1P2(Int_t idx1, Int_t idx2) void SetUsedPairP2P2(Int_t idx1, Int_t idx2) void SetVerbose(Int_t n = 1) void Show() virtual void ShowMembers(TMemberInspector& insp, char* parent) void ShowMixer() void ShowP1() void ShowP1P1() void ShowP1P2() void ShowP2() void ShowP2P2() void ShowUP1P1() void ShowUP1P2() void ShowUP2P2() virtual void Streamer(TBuffer& b) void StreamerNVirtual(TBuffer& b) Bool_t UsedOneP1(Int_t idx) Bool_t UsedOneP2(Int_t idx) Bool_t UsedPairP1P1(Int_t idx1, Int_t idx2) Bool_t UsedPairP1P2(Int_t idx1, Int_t idx2) Bool_t UsedPairP2P2(Int_t idx1, Int_t idx2)

Data Members


    protected:
Int_t nPools Number of active Pools (1 or 2) TObjArray* fPool1 TObjArray* fPool2 Pool1 and Pool2 Int_t fN1MAX Int_t fN2MAX Original n1,n2 called in Constructor Int_t fIdx1MAX Int_t fIdx2MAX Global max. value of Idx1,Idx2 = fNxMAX-1 Int_t fMaxIdx1 Int_t fMaxIdx2 Current max. value of Idx1,Idx2 = nObj-1 Int_t nMaxMXX Int_t nMaxMXY x-size of fMaskXX and fMaskXY Int_t nObjects1 Int_t nObjects2 Number of objects in Pool1, Pool2 TArrayC* fUsed1 TArrayC* fUsed2 Mask of Used Objects in Pool1 and Pool2 Int_t fP1Full Int_t fP2Full Flags to indicate nObjects == nMaxObjects Int_t fP1P2Mode Mode for P1P2 pairs (1 -> excludes (i,i) ) Int_t fP1Rx Int_t fP2Rx Replacement counters for P1, P2 (PUT) Int_t fL1 Int_t fL2 Last idx1, idx2 for Not Used P1 and P2 Objects Int_t fL11x1 Int_t fL11x2 Last idx1 and idx2 for P1P1Nused pairs Int_t fL22x1 Int_t fL22x2 Last idx1 and idx2 for P2P2Nused pairs Int_t fL12x1 Int_t fL12x2 Last idx1 and idx2 for P1P2Nused pairs Int_t fR11x1 Int_t fR11x2 Last idx1 and idx2 for RP1P1Nused pairs Int_t fR22x1 Int_t fR22x2 Last idx1 and idx2 for RP2P2Nused pairs Int_t fR12x1 Int_t fR12x2 Last idx1 and idx2 for RP1P2Nused pairs Int_t fU11x1 Int_t fU11x2 Last idx1 and idx2 for P1P1Unique pairs Int_t fU22x1 Int_t fU22x2 Last idx1 and idx2 for P2P2Unique pairs Int_t fU12x1 Int_t fU12x2 Last idx1 and idx2 for P1P2Unique pairs Int_t fLAC Int_t fLACp Int_t fLACu Int_t fLAC1 Int_t fLAC2 Last Action Codes Char_t fLACName[100] Last Action Name Int_t fID ID if this Mixer in GLOBAL gT49Mixer TObjArray Char_t fIDS[100] Name+ID to identify Hist, Canvas Int_t fVerbose Flag to print out info for debugging Int_t fSeeFlag to make Pool1 & Pool2 blind during Get action Int_t nUsedP1P1 Int_t nUsedP2P2 counter of Used P1P1 and P2P2 Pairs Int_t nUsedP1P2 counter of Used P1P2 Pairs Int_t nUsedUniP1P1 Int_t nUsedUniP2P2 counter of Used Unique P1P1 and P2P2 Pairs Int_t nUsedUniP1P2 Int_t nUsedUniP2P1 counter of Used Unique P1P2-P2P1 Pairs TArrayI* fMaskXX TArrayI* fMaskXY Mask of Used PairsP1P1, P2P2 and P1P2; TArrayI* fUniq11 TArrayI* fUniq22 Mask & Memory of Used Unique P1-P1 and P2-P2 Pairs TArrayI* fUniq12 TArrayI* fUniq21 Mask & Memory of Used Unique P1-P2 Pairs UInt_t fx010[32] UInt_t fx101[32] Bit Masks for OR, AND operations TObject* O1 TObject* O2 Two TObject pointers used in B.C. module Int_t I1 Int_t I2 Last indexes used in B.C. module TH2C* HistXX TH2C* HistYY TH2C* HistXY Histo for P1P1, P2P2 and P1P2 pairs TDialogCanvas* cXX TDialogCanvas* cYY TDialogCanvas* cXY TDialogCanvas* cP1 TDialogCanvas* cP2 TDialogCanvas* cUP1P1 canvas for P1P1, P2P2, P1P2, P1, P2 TDialogCanvas* cUP2P2 TDialogCanvas* cUP1P2 canvas for Unique P1P1, P2P2, P1P2 TDialogCanvas* cGIF TDialogCanvas* cEx canvas for Graph.Int.Face & for Exit TStyle TS TStyle for GUI

Class Description

 *************************
 *  T49MiXeR CLASS V1.0  *
 *************************

 T49Mixer Class is a software tool designed for the Event mixing technique.
 It can generate various types of Object pairs e.g.:
   1) Random Pair types
   2) Unique Pair types
 T49Mixer has two Pools (P1 and P2) where objects can be stored.
 Therefore it can generate P1P1, P2P2 and P1P2 pairs.
 In the case of Unique pairs each object is used only once for pair generation.
 T49Mixer can generate also Random Unique Pairs - see e.g. GetRUniquePairP1P1()

 Method PutToP1 (the same for P2) stores your objects into the Mixer's Pool
 via Object->Clone() method. This creates a copy of the object in the Pool.
 If Pool is full, old objects are replacedi (one after another).
 While replacing old object X a simple "delete X" call is used to remove
 old object. Make sure X->Clone() and "delete X" works well for your X !
 (For TObjArray type "delete X" works well if X->SetOwner(1) is used.)

 If your objects are not Clonable you can still mix them in T49Mixer:
 Prepare TObjArray* W of pointers to your objects and use SetPool1(W) method.
 In this case you take responsibility for the storage of objects being mixed.

 Pools of T49Mixer do not have to be full to generate pairs. You can ask for
 the pair any time. For number of pairs in T49Mixer call e.g. NofPairsP1P2().

 T49Mixer remembers which pairs have been generated.
 Therefore you can ask for not used pairs of a given type e.g.:
   - GetNuPairP1P2   (first Not used  P1P2 pair )
   - GetNuRPairP1P2  (random Not used P1P2 pair - requires more CPU time)

 T49Mixer has its own Graphical Interface Show() which shows current
 status of the Mixer graphically:
   - Number of objects in the pool  ShowP1()
   - Number of generated pairs      ShowP1P1()
   - Status of Unique pairs         ShowUP1P1()

 Typical usage of T49Mixer can look as follows:
    1) declaration e.g.    T49Mixer* MX = new T49Mixer(100,1030);
    2) filling of Pool(s)  MX->PutToP1(Obj1) or MX->SetPool1(ObjArray)
    3) generating pairs    MX->GetRPairP1P1(&Obj1,&Obj2);
    4) emptying the pools  MX->PurgePool1()  or MX->ClearPool1()
    5) another filling - 2) and generating pairs - 3)
    6) deleting mixer if created on Heap (as shown here)

 Do not forget: GetRPairP1P1(&Obj1,&Obj2) can repeat same pairs.

 Enjoy T49Mixer !

 Designed at 
MPI
 19.11.1999.
 Send comments to 
PFILIPS
.



T49Mixer(Int_t n)
  Constructor to initialize the mixer with 1 Pool.
  n - number of objects to be stored (default 100)
  Declare as: T49Mixer TX(1700);  or  T49Mixer TX;
  Heap declaration: T49Mixer* TX = new T49Mixer();


T49Mixer(Int_t n1, Int_t n2)
  Constructor to initialize the mixer with 2 Pools
  n1, n2 - number of objects to be stored in Pools
  Declare: T49Mixer DX(100,200); (on Data Segment)
  or: T49Mixer* HX = new T49Mixer(500,700); (Heap)


~T49Mixer()
 T49Mixer Destructor

Bool_t IsFull()
 Return "true" if Pools of mixer are full
 Identical to PoolsFull()

void PutToMixer(TObject *Obj1, TObject *Obj2)
 Put Obj1 to Pool1 and Obj2 to Pool2
 Identical to PutToP1P2(Obj1,Obj2)

Int_t PutOne(TObject *Obj)
 Put object Obj into Pool1 of Mixer
 Identical to PutToP1(Obj)

Int_t NofObjects()
 Get number of objects in Pool1
 Identical to NofObjectsP1()

Int_t NofUsed()
 Get number of used objects in Pool1
 Identical to NofUsedP1()

Int_t NofFree()
 Get number of not used objects in Pool1
 Identical to NofFreeP1()

TObject* GetOne()
 Get pointer to random object in Pool1 of Mixer
 Identical to GetFromP1()

TObject* GetOneAt(Int_t idx)
 Get pointer to Object in Pool1 of Mixer at position idx
 Identical to GetFromP1At(idx)

TObject* GetNuOne()
 Get pointer to Not Used object in Pool1 of Mixer
 Identical to GetNuOneP1()

TObject* GetNuROne()
 Get pointer to Not Used Random object in Pool1 of Mixer
 Identical to GetNuROneP1()

Int_t NofPairs()
 Get number of P1P1 pairs of objects in Pool1
 Identical to NofPairsP1P1()

Int_t NofUsedPairs()
 Get number of Used P1P1 pairs of objects in Pool1
 Identical to NofUsedPairsP1P1()

Int_t NofFreePairs()
 Get number of not used P1P1 pairs of objects in Pool1
 Identical to NofFreePairsP1P1()

Bool_t GetPairAt(TObject** Obj1, TObject** Obj2, Int_t idx1, Int_t idx2)
 Set pointers Obj1, Obj2 to pair of objects in Pool1 at positions idx1, idx2
 Identical to GetPairP1P1At(Obj1,Obj2,idx1,idx2)

Bool_t GetRPair(TObject** Obj1,TObject** Obj2)
 Set pointers Obj1, Obj2 to pair of objects in Pool1 at random and different positions idx1, idx2
 Identical to GetRPairP1P1(Obj1,Obj2)

Bool_t GetNuPair(TObject** Obj1,TObject** Obj2)
 Set pointers Obj1, Obj2 to not used pair of objects in Pool1
 Identical to GetNuPairP1P1(Obj1,Obj2)

Bool_t GetNuRPair(TObject** Obj1,TObject** Obj2)
 Set pointers Obj1, Obj2 to random not used pair of objects in Pool1
 Identical to GetNuRPairP1P1(Obj1,Obj2)

Int_t NofUniquePairs()
 Get number of Unique P1P1 pairs of objects in Pool1
 Identical to NofUniquePairsP1P1()

Int_t NofUsedUniquePairs()
 Get number of Used Unique P1P1 pairs of objects in Pool1
 Identical to NofUsedUniquePairsP1P1()

Int_t NofFreeUniquePairs()
 Get number of not used Unique P1P1 pairs of objects in Pool1
 Identical to NofFreeUniquePairsP1P1()

Bool_t GetUniquePair(TObject** Obj1,TObject** Obj2)
 Set pointers Obj1, Obj2 to Unique pair of objects in Pool1
 Identical to GetUniquePairP1P1(Obj1,Obj2)

Bool_t GetRUniquePair(TObject** Obj1,TObject** Obj2)
 Set pointers Obj1, Obj2 to Random Unique pair of objects in Pool1
 Identical to GetRUniquePairP1P1(Obj1,Obj2)

void PurgeMixer()
 Delete objects in Pools of Mixer
 Identical to PurgePools()

void SetMixer(TObjArray *ObjA1, TObjArray *ObjA2)
 Copy object pointers from TObjArrays into Pools
 Identical to SetPools(ObjA1,ObjA2)

void ClearMixer()
 Clear TObject pointers (=0) in Pools of Mixer
 Identical To ClearPools()

void ResetMixer()
 Reset all information about usage of pairs and objects
 Content of Pools remains untouched
 Identical to AllUsedReset()

void ShowMixer()
 Show Graphic User Interface of Mixer
 Identical to Show()

void DumpMixer()
 Print ASCII information about pairs in mixer
 Identical to DumpP1P1() and DumpP2P2() + DumpP1P2()

Char_t* GetLAname()
 Return string name of last recorded action performed in Mixer
 Identical to GetLACName( GetLACode() )

Bool_t PoolsFull()
 Return "true" if Pools of mixer are full

Bool_t Pool1Full()
 Return "true" if Pool1 is full

Bool_t Pool2Full()
 Return "true" if Pool2 is full

void PurgePools()
 Delete objects in Pool1 and also in Pool2 if exists

void PurgePool1()
 Delete Objects in Pool1

void PurgePool2()
 Delete Objects in Pool2

void ClearPools()
 Set TObject pointers = 0 in Pool1 & Pool2
 Use after SetPools() otherwise heap leaks
 This does not reset Used/Notused info.

void ClearPool1()
 Set all Pool1 TObject pointers = 0
 Use after SetPool1(), otherwise heap leak
 This does not reset Used/Notused info.

void ClearPool2()
 Set all Pool2 TObject pointers = 0
 Use after SetPool2(), otherwise heap leak
 This does not reset Used/Notused info.

void Show()
 T49Mixer Graphic User Interface
 Shows status of Pools and generated pairs

void ShowP1()
 Show Pool1 status

void ShowP2()
 Show Pool2 status

void ShowP1P1()
 Show P1P1 pairs status

void ShowP2P2()
 Show P2P2 pairs status

void ShowP1P2()
 Show P1P2 pairs status

void ShowUP1P1()
 Show UniqueP1P1 pairs status

void ShowUP2P2()
 Show UniqueP2P2 pairs status

void ShowUP1P2()
 Show UniqueP1P2 pairs status

void Copyright(Int_t opt)
 Copyright window with Button option
 opt=0 for Rights ; opt=1 for Exit GUI

void CopyClose()
 Close Copyright window

void CloseWindows()
 Close all GUI objects

void ExitShow()
 T49Mixer GUI destructor

void DumpP1P1P2P2()
 Print status of P1P1 and P2P2 pairs in ASCII format

void DumpP1P2()
 Print status of P1P2 pairs in ASCII format

void DumpP1P1()
 Print status of P1P1 pairs in ASCII format

void DumpP2P2()
 Print status of P2P2 pairs in ASCII format

void AllUsedReset()
 Clear all Used/Nused information in Mixer (all pairs and objects)

void AllUsedResetP1()
 Clear all Used/Nused information in Pool1 (pairs and objects)

void AllUsedResetP2()
 Clear all Used/Nused information in Pool2 (pairs and objects)

void ResetUP1()
 Set all TObjects in Pool1 as NotUsed

void ResetUP2()
 Set all TObjects in Pool2 as NotUsed

void ResetAllPxPx()
 Clear Used/Nused P1P1, P1P2, P2P2 pairs information

void ResetP1P1_P2P2()
 Clear Used/Nused P1P1 and P2P2 pairs information
 Call also for fast P1P1 case if only Pool1 used

void ResetP1P1()
 Clear Used/Nused P1P1 pairs information
 note: ResetP1P1_P2P2() is faster

void ResetP2P2()
 Clear Used/Nused P2P2 pairs information

void ResetP1P2()
 Clear Used/Nused P1P2 pairs information
 (i,i) pairs forbidden if SetP1P2Mode(1)

void SetP1P2Mode(Int_t m)
 Set P1P2Mode = 1 to exlude generation of P1P2(i,i) pairs

void ResetAllUniPxPx()
 Clear Used/Nused Unique (P1P1, P1P2, P2P2) pairs information

void ResetUniP1P1()
 Clear Used/Nused P1P1 Unique pairs information

void ResetUniP2P2()
 Clear Used/Nused P2P2 Unique pairs information

void ResetUniP1P2()
 Clear Used/Nused P1P2 Unique pairs information

Bool_t SetPools(TObjArray *ObjA1, TObjArray *ObjA2)
 Copy pointers of TObjects (from TObjArrays) into Pools
 + reset Used/NotUsed status of changed pairs & Objects
 Use only if Pools are empty e.g. after ClearPools()
 Note: This is FASTER then SetPool1() + SetPool2()

Bool_t SetPool1(TObjArray *ObjA)
 Copy pointers of TObjects (from TObjArray) into Pool1
 +reset Used/NotUsed status of changed pairs & Objects
 Use only if Pool1 is empty e.g. after ClearPool1()

Bool_t SetPool2(TObjArray *ObjA)
 Copy pointers of TObjects (from TObjArray) into Pool2
 +reset Used/NotUsed status of changed pairs & Objects
 Use only if Pool2 is empty e.g. after ClearPool2()

Int_t AddOne(TObject *Obj)
 Identical to AddToP1(Obj)

Int_t AddToP1(TObject *Obj)
 Add TObject to Pool1 = create cloned copy of TObject in Pool1
 returns internal position of TObject in the Pool

Int_t AddToP2(TObject *Obj)
 Add TObject to Pool2 = create cloned copy of TObject in Pool2
 returns internal position of TObject in the Pool

Bool_t AddToP1P2(TObject *Obj1, TObject *Obj2)
 Add Obj1 to Pool1  &  Add Obj2 to Pool2

Int_t ReplaceOneAt(TObject *Obj, Int_t idx)
 Identical to ReplaceInP1At(Obj,idx)

Int_t ReplaceInP1At(TObject *Obj, Int_t idx)
 Replace = delete old TObject + Add new TObject in Pool1 at position idx

Int_t ReplaceInP2At(TObject *Obj, Int_t idx)
 Replace = delete old TObject + Add new TObject in Pool2 at position idx

Bool_t ReplaceInP1P2At(TObject *Obj1, TObject *Obj2, Int_t idx1, Int_t idx2)
 Replace (Obj1 in Pool1 ,  Obj2 in Pool2) at positions (idx1 , idx2)

Int_t ReplaceOne(TObject *Obj)
 Identical to ReplaceInP1(Obj)

Int_t ReplaceInP1(TObject *Obj)
 Replace = delete old and Add new TObject in Pool1
           at position idx internally increasing

Int_t ReplaceInP2(TObject *Obj)
 Replace = delete old and Add new TObject in Pool1
           at position idx internally increasing

Bool_t ReplaceInP1P2(TObject *Obj1, TObject *Obj2)
 Replace Obj1 in Pool1 and Obj2 in Pool2
 at positions idx1 & idx2 internally increasing

Bool_t PutToP1P2(TObject *Obj1, TObject *Obj2)
 Put Obj1 to Pool1 and put Obj2 to Pool2

Int_t PutToP1(TObject *Obj)
 AddToP1(Obj) or ReplaceInP1(Obj) if Pool1 is full
 returns position of Object in Pool
 Internal increasing counter is used for replacement.

Int_t PutToP2(TObject *Obj)
 AddToP2(Obj) or ReplaceInP2(Obj) if Pool2 is full
 returns position of Object in Pool
 Internal increasing counter is used for replacement.

TObject* GetFromP1()
 Get pointer to Randomly chosen TObject in Pool1
 TObject is marked as Used

TObject* GetFromP2()
 Get pointer to Randomly chosen TObject in Pool2
 TObject is marked as Used

TObject* GetFromPool1(Int_t &idx)
 Internal routine

TObject* GetFromPool2(Int_t &idx)
 Internal routine

TObject* GetNuOneP1()
 Get pointer to first NotUsed TObject in Pool1
 TObject is marked as Used

TObject* GetNuOneP2()
 Get pointer to first NotUsed TObject in Pool2
 TObject is marked as Used

TObject* GetNuROneP1()
 Get pointer to random NotUsed TObject in Pool1
 TObject is marked as Used

TObject* GetNuROneP2()
 Get pointer to random NotUsed TObject in Pool2
 TObject is marked as Used

TObject* GetFromP1At(Int_t idx)
 Get pointer to TObject in Pool1 at position idx
 TObject is marked as Used

TObject* GetFromP2At(Int_t idx)
 Get pointer to TObject in Pool2 at position idx
 TObject is marked as Used

Bool_t GetPairP1P1At(TObject** Obj1, TObject** Obj2, Int_t idx1, Int_t idx2)
 Get pair of two Objects from Pool1 at (idx1,idx2)
          pair is marked as Used
 Call by: GetPairP1P1At(&Obj1, &Obj2,i,j)
          since Obj1, Obj2 are set inside
 Declare Obj1,Obj2  as TObject *Obj1,*Obj2

Bool_t GetPairP2P2At(TObject** Obj1, TObject** Obj2, Int_t idx1, Int_t idx2)
 Get pair of two Objects from Pool2 at (idx1,idx2)
          pair is marked as Used
 Call by: GetPairP2P2At(&Obj1, &Obj2,i,j)
          since Obj1, Obj2 are set inside
 Declare Obj1,Obj2  as TObject *Obj1,*Obj2

Bool_t GetPairP1P2At(TObject** Obj1, TObject** Obj2, Int_t idx1, Int_t idx2)
 Get pair of Objects from Pool1 and Pool2 at (idx1,idx2)
          pair is marked as Used
 Call by: GetPairP1P2At(&Obj1, &Obj2,i,j)
          since Obj1, Obj2 are set inside
 Declare Obj1,Obj2  as TObject *Obj1,*Obj2

Bool_t GetRPairP1P1(TObject** Obj1, TObject** Obj2)
 Get random pair of ANY two Objects from Pool1
          pair is marked as Used
 Call by: GetRPairP1P1(&Obj1, &Obj2)
          since Obj1, Obj2 are set inside
 Declare Obj1,Obj2  as TObject *Obj1,*Obj2

Bool_t GetRPairP1P1x(TObject** Obj1, TObject** Obj2)
 Get random pair of ANY two Objects from Pool1
      pair is NOT marked as Used
 Call by: GetRPairP1P1x(&Obj1, &Obj2)
          since Obj1, Obj2 are set inside
 Declare Obj1,Obj2  as TObject *Obj1,*Obj2

Bool_t GetRPairP2P2(TObject** Obj1, TObject** Obj2)
 Get random pair of ANY two Objects from Pool2
          pair is marked as Used
 Call by: GetRPairP2P2(&Obj1, &Obj2)
          since Obj1, Obj2 are set inside
 Declare Obj1,Obj2  as TObject *Obj1,*Obj2

Bool_t GetRPairP2P2x(TObject** Obj1, TObject** Obj2)
 Get random pair of ANY two Objects from Pool2
      pair is NOT marked as Used
 Call by: GetRPairP2P2x(&Obj1, &Obj2)
          since Obj1, Obj2 are set inside
 Declare Obj1,Obj2  as TObject *Obj1,*Obj2

Bool_t GetRPairP1P2(TObject** Obj1, TObject** Obj2)
 Get random pair of ANY Objects from Pool1 and Pool2
          pair is marked as Used
 Call by: GetRPairP1P2(&Obj1, &Obj2)
          since Obj1, Obj2 are set inside
 Declare Obj1,Obj2  as TObject *Obj1,*Obj2

Bool_t GetRPairP1P2x(TObject** Obj1, TObject** Obj2)
 Get random pair of ANY Objects from Pool1 and Pool2
      pair is NOT marked as Used
 Call by: GetRPairP1P2x(&Obj1, &Obj2)
          since Obj1, Obj2 are set inside
 Declare Obj1,Obj2  as TObject *Obj1,*Obj2

Bool_t GetNuPairP1P1(TObject** Obj1,TObject** Obj2)
 Get first Not used pair of two Objects from Pool1
           and mark pair as Used
 Call by: GetNuPairP1P1(&Obj1, &Obj2)
          since Obj1, Obj2 are set inside
 Declare Obj1,Obj2  as TObject *Obj1,*Obj2

Bool_t GetNuPairP2P2(TObject** Obj1,TObject** Obj2)
 Get first Not used pair of two Objects from Pool2
           and mark pair as Used
 Call by: GetNuPairP2P2(&Obj1, &Obj2)
          since Obj1, Obj2 are set inside
 Declare Obj1,Obj2  as TObject *Obj1,*Obj2

Bool_t GetNuPairP1P2(TObject** Obj1,TObject** Obj2)
 Get first Not used pair of Objects from Pool1 and Pool2
           and mark pair as Used
 Call by: GetNuPairP1P2(&Obj1, &Obj2)
          since Obj1, Obj2 are set inside
 Declare Obj1,Obj2  as TObject *Obj1,*Obj2

Bool_t GetNuRPairP1P1(TObject** Obj1,TObject** Obj2)
 Get random Not used pair of two Objects from Pool1
           and mark pair as Used
 Call by: GetNuRPairP1P1(&Obj1, &Obj2)
          since Obj1, Obj2 are set inside
 Declare Obj1,Obj2  as TObject *Obj1,*Obj2

Bool_t GetNuRPairP2P2(TObject** Obj1,TObject** Obj2)
 Get random Not used pair of two Objects from Pool2
           and mark pair as Used
 Call by: GetNuRPairP2P2(&Obj1, &Obj2)
          since Obj1, Obj2 are set inside
 Declare Obj1,Obj2  as TObject *Obj1,*Obj2

Bool_t GetNuRPairP1P2(TObject** Obj1,TObject** Obj2)
 Get random Not used pair of Objects from Pool1 and Pool2
           and mark pair as Used
 Call by: GetNuRPairP1P2(&Obj1, &Obj2)
          since Obj1, Obj2 are set inside
 Declare Obj1,Obj2  as TObject *Obj1,*Obj2

Bool_t GetUniquePairP1P1(TObject** Obj1,TObject** Obj2)
 Get Unique pair of two Objects from Pool1
           and mark Unique pair as Used
 Call by: GetUniquePairP1P1(&Obj1, &Obj2)
          since Obj1, Obj2 are set inside
 Declare Obj1,Obj2 as TObject *Obj1,*Obj2

Bool_t GetUniquePairP2P2(TObject** Obj1,TObject** Obj2)
 Get Unique pair of two Objects from Pool2
           and mark Unique pair as Used
 Call by: GetUniquePairP2P2(&Obj1, &Obj2)
          since Obj1, Obj2 are set inside
 Declare Obj1,Obj2 as TObject *Obj1,*Obj2

Bool_t GetUniquePairP1P2(TObject** Obj1,TObject** Obj2)
 Get Unique pair of Objects from Pool1 and Pool2
           and mark Unique pair as Used
 Call by: GetUniquePairP1P2(&Obj1, &Obj2)
          since Obj1, Obj2 are set inside
 Declare Obj1,Obj2 as TObject *Obj1,*Obj2

Bool_t GetRUniquePairP1P1(TObject** Obj1,TObject** Obj2)
 Get random Unique pair of two Objects from Pool1
           and mark Unique pair as Used
 Call by: GetRUniquePairP1P1(&Obj1, &Obj2)
          since Obj1, Obj2 are set inside
 Declare Obj1,Obj2 as TObject *Obj1,*Obj2

Bool_t GetRUniquePairP2P2(TObject** Obj1,TObject** Obj2)
 Get random Unique pair of two Objects from Pool2
           and mark Unique pair as Used
 Call by: GetRUniquePairP2P2(&Obj1, &Obj2)
          since Obj1, Obj2 are set inside
 Declare Obj1,Obj2 as TObject *Obj1,*Obj2

Bool_t GetRUniquePairP1P2(TObject** Obj1,TObject** Obj2)
 Get random Unique pair of Objects from Pool1 and Pool2
           and mark Unique pair as Used
 Call by: GetRUniquePairP1P2(&Obj1, &Obj2)
          since Obj1, Obj2 are set inside
 Declare Obj1,Obj2 as TObject *Obj1,*Obj2

Int_t NofObjectsP1()
 Get number of Objects in Pool1

Int_t NofObjectsP2()
 Get number of Objects in Pool2

Int_t NofUsedP1()
 Get number of Used Objects in Pool1

Int_t NofUsedP2()
 Get number of Used Objects in Pool2

Int_t NofFreeP1()
 Get number of Free = Not Used Objects in Pool1

Int_t NofFreeP2()
 Get number of Free = Not Used Objects in Pool2

Int_t NofPairsP1P1()
 Get number of P1P1 pairs

Int_t NofPairsP2P2()
 Get number of P2P2 pairs

Int_t NofPairsP1P2()
 Get number of P1P2 pairs

Int_t NofUsedPairsP1P1()
 Get number of Used P1P1 pairs

Int_t NofUsedPairsP2P2()
 Get number of Used P2P2 pairs

Int_t NofUsedPairsP1P2()
 Get number of Used P1P2 pairs

Int_t NofFreePairsP1P1()
 Get number of Free = NotUsed P1P1 pairs

Int_t NofFreePairsP2P2()
 Get number of Free = NotUsed P2P2 pairs

Int_t NofFreePairsP1P2()
 Get number of Free = NotUsed P1P2 pairs

Int_t NofUniquePairsP1P1()
 Get number of Unique P1P1 pairs

Int_t NofUniquePairsP2P2()
 Get number of Unique P2P2 pairs

Int_t NofUniquePairsP1P2()
 Get number of Unique P1P2 pairs

Int_t NofUsedUniquePairsP1P1()
 Get number of Used Unique P1P1 pairs

Int_t NofUsedUniquePairsP2P2()
 Get number of Used Unique P2P2 pairs

Int_t NofUsedUniquePairsP1P2()
 Get number of Used Unique P1P2 pairs

Int_t NofFreeUniquePairsP1P1()
 Get number of Free Unique P1P1 pairs

Int_t NofFreeUniquePairsP2P2()
 Get number of Free Unique P2P2 pairs

Int_t NofFreeUniquePairsP1P2()
 Get number of Free Unique P1P2 pairs

Int_t NofFreeP1x2()
 Internal routine

Int_t NofFreeP2x1()
 Internal routine

Bool_t UsedOneP1(Int_t idx)
 Return Used/Nused status of Object in Pool1 at position idx

void SetUsedOneP1(Int_t idx)
 Mark Object in Pool1 at position idx as Used

void SetNUsedOneP1(Int_t idx)
 Mark Object in Pool1 at position idx as NotUsed

Bool_t UsedOneP2(Int_t idx)
 Return Used/Nused status of Object in Pool1 at position idx

void SetUsedOneP2(Int_t idx)
 Mark Object in Pool1 at position idx as Used

void SetNUsedOneP2(Int_t idx)
 Mark Object in Pool1 at position idx as NotUsed

Bool_t UsedPairP1P1(Int_t idx1, Int_t idx2)
 Return Used/Nused status of P1P1 pair (idx1,idx2)

Bool_t UsedPairP1P1(Int_t idx)
 Internal routine

void SetUsedPairP1P1(Int_t idx1, Int_t idx2)
 Mark P1P1 pair (idx1,idx2) as Used

void SetNUsedPairP1P1(Int_t idx1, Int_t idx2)
 Mark P1P1 pair (idx1,idx2) as NotUsed

Bool_t UsedPairP2P2(Int_t idx1, Int_t idx2)
 Return Used/Nused status of P2P2 pair (idx1,idx2)

Bool_t UsedPairP2P2(Int_t idx)
 Internal routine

void SetUsedPairP2P2(Int_t idx1, Int_t idx2)
 Mark P2P2 pair (idx1,idx2) as Used

void SetNUsedPairP2P2(Int_t idx1, Int_t idx2)
 Mark P2P2 pair (idx1,idx2) as NotUsed

Bool_t UsedPairP1P2(Int_t idx1, Int_t idx2)
 Return Used/Nused status of P1P2 pair (idx1,idx2)

Bool_t UsedPairP1P2(Int_t idx)
 Internal routine

void SetUsedPairP1P2(Int_t idx1, Int_t idx2)
 Mark P1P2 pair (idx1,idx2) as Used

void SetNUsedPairP1P2(Int_t idx1, Int_t idx2)
 Mark P1P2 pair (idx1,idx2) as NotUsed

Bool_t UsedUniqueP1(Int_t idx1)
 Return UniqueP1P1 Used/Nused status of TObject in Pool1 at (idx1)

void SetUsedUniqueP1(Int_t idx1)
 Mark TObject in Pool1 at (idx1) as Used for UniqueP1P1 pairs

void SetNUsedUniqueP1(Int_t idx1)
 Mark TObject in Pool1 at (idx1) as NotUsed for UniqueP1P1 pairs

Bool_t UsedUniqueP2(Int_t idx1)
 Return UniqueP2P2 Used/Nused status of TObject in Pool2 at (idx1)

void SetUsedUniqueP2(Int_t idx1)
 Mark TObject in Pool2 at (idx1) as Used for Unique P2P2 pairs

void SetNUsedUniqueP2(Int_t idx1)
 Mark TObject in Pool2 at (idx1) as NotUsed for UniqueP2P2 pairs

Bool_t UsedUniqueP1x2(Int_t idx1)
 Return UniqueP1P2 Used/Nused status of TObject in Pool1 at (idx1)

void SetUsedUniqueP1x2(Int_t idx1)
 Mark TObject in Pool1 at (idx1) as Used for Unique P1P2 pairs

void SetNUsedUniqueP1x2(Int_t idx1)
 Mark TObject in Pool1 at (idx1) as NotUsed for Unique P1P2 pairs

Bool_t UsedUniqueP2x1(Int_t idx2)
 Return UniqueP1P2 Used/Nused status of TObject in Pool2 at (idx2)

void SetUsedUniqueP2x1(Int_t idx2)
 Mark TObject in Pool2 at (idx2) as Used for Unique P1P2 pairs

void SetNUsedUniqueP2x1(Int_t idx2)
 Mark TObject in Pool2 at (idx2) as NotUsed for Unique P1P2 pairs

void SetUsedUniqueIDXP1(Int_t Idx1, Int_t Idx2)
 Internal routine

Int_t GetUsedUniqueIDXP1(Int_t idx)
 Internal routine

void SetUsedUniqueIDXP2(Int_t Idx1, Int_t Idx2)
 Internal routine

Int_t GetUsedUniqueIDXP2(Int_t idx)
 Internal routine

void SetUsedUniqueIDXP1x2(Int_t Idx1, Int_t Idx2)
 Internal routine

Int_t GetUsedUniqueIDXP1x2(Int_t idx)
 Internal routine

void SetUsedUniqueIDXP2x1(Int_t Idx1, Int_t Idx2)
 Internal routine

Int_t GetUsedUniqueIDXP2x1(Int_t idx)
 Internal routine

void SetNUsedAfterReplaceP1(Int_t idx)
 Internal routine

void SetNUsedAfterReplaceP2(Int_t idx)
 Internal routine

void InitRnd()
 Initialize and randomize generator

void InitStyle()
 Set TStyle for GUI

void Init101()
 Set internal bit masks for AND/OR 32bit operations

Bool_t GetLastUniP1P1(Int_t &Idx1,Int_t &Idx2)
 Get (idx1,idx2) of Last generated Unique P1P1 pair
 Call: GetLastUniP1P1(Idx1,Idx2); // Int_t Idx1,Idx2;

Bool_t GetLastUniP1P2(Int_t &Idx1,Int_t &Idx2)
 Get (idx1,idx2) of Last generated Unique P1P2 pair
 Call: GetLastUniP1P2(Idx1,Idx2); // Int_t Idx1,Idx2;

Bool_t GetLastUniP2P2(Int_t &Idx1,Int_t &Idx2)
 Get (idx1,idx2) of Last generated Unique P2P2 pair
 Call: GetLastUniP2P2(Idx1,Idx2); // Int_t Idx1,Idx2;

Bool_t GetLastP1P1(Int_t &Idx1,Int_t &Idx2)
 Get (idx1,idx2) of Last generated NotUsed P1P1 pair
 Call: GetLastP1P1(Idx1,Idx2); // Int_t Idx1,Idx2;

Bool_t GetLastP2P2(Int_t &Idx1,Int_t &Idx2)
 Get (idx1,idx2) of Last generated NotUsed P2P2 pair
 Call: GetLastP2P2(Idx1,Idx2); // Int_t Idx1,Idx2;

Bool_t GetLastP1P2(Int_t &Idx1,Int_t &Idx2)
 Get (idx1,idx2) of Last generated NotUsed P1P2 pair
 Call: GetLastP1P2(Idx1,Idx2); // Int_t Idx1,Idx2;

Char_t* GetLACName(Int_t LA)
 Return string name of last operation with code LA



Inline Functions


             Bool_t CheckBound1(Int_t m)
             Bool_t CheckBound2(Int_t m)
               void SetVerbose(Int_t n = 1)
              Int_t GetP1P2Mode()
              Int_t GetLACode()
               void ClrLACode()
              Int_t GetLastP1Call()
              Int_t GetLastP2Call()
              Int_t GetLACPair()
              Int_t GetLACUniPair()
             Bool_t IsReady()
             Bool_t CH1(Int_t i, Int_t j)
             Bool_t CH2(Int_t i, Int_t j)
             Bool_t CH3(Int_t i, Int_t j)
               void AddEvent(TObject* Obj)
               void AddEvent(TObject* Obj1, TObject* Obj2)
               void GetEvent()
               void GetEvent(int i, int j)
               void GetEventX()
               void GetEventX(int i, int j)
           TObject* GetPart1List()
           TObject* GetPart2List()
               void GetEventP1()
               void GetEventP1(Int_t i, Int_t j)
               void GetEventP1X()
               void GetEventP1X(Int_t i, Int_t j)
           TObject* GetPart1ListP1()
           TObject* GetPart2ListP1()
               void GetEventP2()
               void GetEventP2X()
               void GetEventP2(int i, int j)
               void GetEventP2X(int i, int j)
           TObject* GetPart1ListP2()
           TObject* GetPart2ListP2()
               void GetEventP12()
               void GetEventP12X()
               void GetEventP12(int i, int j)
               void GetEventP12X(int i, int j)
           TObject* GetPart1ListP12()
           TObject* GetPart2ListP12()
            TClass* Class()
            TClass* IsA() const
               void ShowMembers(TMemberInspector& insp, char* parent)
               void Streamer(TBuffer& b)
               void StreamerNVirtual(TBuffer& b)
           T49Mixer T49Mixer(const T49Mixer&)
          T49Mixer& operator=(const T49Mixer&)


Last update: Thu Aug 17 15:32:09 2006


ROOT page - Class index - Class Hierarchy - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.