ROOT logo
// @(#)$Id: hsudummyrec.h,v 1.6 2009-07-15 11:38:42 halo Exp $
//*-- Author : Marcin Jaskula 02/11/2002
//*-- Modifed: Marcin Jaskula 11/07/2003
//             *Events support added
//*-- Modifed: Jacek Otwinowski 10/02/2007
//             reinit() function has been changed 

#ifndef HSUDummyRec_H
#define HSUDummyRec_H

////////////////////////////////////////////////////////////////////////////////
//                                                                            //
// HSUDummyRec                                                                //
//                                                                            //
// Dummy reconstructor which calls user defined functions                     //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

#include "hreconstructor.h"
#include "haddef.h"

#include "TList.h"
#include "TFile.h"

// -----------------------------------------------------------------------------

class HCategory;
class HIterator;
class TFile;

// -----------------------------------------------------------------------------

class HSUDummyRec : public HReconstructor
{
public:
                        HSUDummyRec(Bool_t bVerbose = kTRUE);
                        HSUDummyRec(const Char_t *pOutFileName,
                                            Bool_t bVerbose = kTRUE);
                        HSUDummyRec(const Text_t name[],const Text_t title[],
                                    Bool_t bVerbose = kTRUE);
                        HSUDummyRec(const Char_t *pOutFileName,
                                    const Text_t name[],const Text_t title[],
                                    Bool_t bVerbose = kTRUE);
                       ~HSUDummyRec(void);

    // -------------------------------------------------------------------------

    void                setVerbose(Bool_t b = kTRUE)      { bVerbose = b;      }
    Bool_t              getVerbose(void) const            { return bVerbose;   }

    // -------------------------------------------------------------------------

    static HCategory*   getCategory(Cat_t cat, Bool_t bRaport = kTRUE);
    static HCategory*   getCategory(const Char_t* pName, Bool_t bRaport = kTRUE);

    HIterator*          getIterator(Cat_t cat, Bool_t bDelete = kTRUE);
    HIterator*          getIterator(const Char_t* pName, Bool_t bDelete = kTRUE);

    // -------------------------------------------------------------------------

    void                addObjectToWrite(TObject *pObj, Bool_t bDelete = kTRUE);

    Bool_t              removeObject(TObject *pObj);
    Bool_t              removeIterator(HIterator *pI);

    // -------------------------------------------------------------------------

    Int_t               writeObjects(TFile *pFile);
    Int_t               writeObjects(const Char_t *pFileName,
                                Bool_t bRecreate = kTRUE);

    // -------------------------------------------------------------------------

    TFile*              getOutFile(void) const          { return pOutFile;     }
    Bool_t              setOutFile(TFile *pFile, Bool_t bCloseOld = kFALSE);
    TFile*              openOutFile(const Char_t *pName = NULL,
                                                Bool_t bRecr = kTRUE);
    Bool_t              writeAndCloseOutFile(void);

    // -------------------------------------------------------------------------

    const TString&      getOutFileName(void) const      { return sOutFileName; }
    void                setOutFileName(const Char_t *pName)
                                                        { sOutFileName = pName;}

    // -------------------------------------------------------------------------

    virtual void        Print(Option_t* option) const   { print();             }
    virtual void        print(void) const;

    // -------------------------------------------------------------------------

    virtual Int_t       execute(void)                   { return 0;            }
    virtual Bool_t      init(void)                      { return kTRUE;        }
    virtual Bool_t      finalize(void)                  { return kTRUE;        }
    virtual Bool_t      reinit(void)                    { return kTRUE;        }

    // -------------------------------------------------------------------------

    Bool_t              getInitOk(void)                 { return bInitOk;      }
    void                setInitOk(Bool_t b = kTRUE)     { bInitOk = b;         }

    // -------------------------------------------------------------------------

    void                setEvents(Int_t i)              { iEvents = i;         }
    void                incEvents(void)                 { ++iEvents;           }
    Int_t               getEvents(void) const           { return iEvents;      }

    void                setWriteEvents(Bool_t b = kTRUE){ bWriteEvents = b;    }
    Bool_t              getWriteEvents(void) const      { return bWriteEvents; }

    // -------------------------------------------------------------------------

protected:

    TList               lToDelete;          // list of allocated objects
    TList               lToWrite;           // list of objects for writing

    Bool_t              bVerbose;           // report any warnings

    Bool_t              bInitOk;            // flag if init was ok

    TFile              *pOutFile;           // output file

    TString             sOutFileName;       // name of the output file

    Int_t               iEvents;            // number of events
    Bool_t              bWriteEvents;       // write number of entries

    // -------------------------------------------------------------------------

    void                setDefault(void);

    // -------------------------------------------------------------------------

    ClassDef(HSUDummyRec, 0)  // Dummy reconstructor
};

// -----------------------------------------------------------------------------

class HSUIteratorObject : public TObject
{
public:

                HSUIteratorObject(void)          : pIter(NULL)  {}
                HSUIteratorObject(HIterator *pI) : pIter(pI)    {}
               ~HSUIteratorObject(void);

    // -------------------------------------------------------------------------

    HIterator*  get(void) const             { return pIter; }
    void        set(HIterator *pI)          { pIter = pI;   }

public:
    HIterator *pIter;

    // -------------------------------------------------------------------------

    ClassDef(HSUIteratorObject, 0)  // Wrapper HIterator -> TObject
};

// -----------------------------------------------------------------------------

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