00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef STAR_StStrangeControllerBase
00029 #define STAR_StStrangeControllerBase
00031 // //
00032
00033
00035 #include "TNamed.h"
00036 #include "TClonesArray.h"
00037
00038 class TTree;
00039 class TArrayI;
00040 class TArrayS;
00041 class StEvent;
00042 class StMcVertex;
00043 class StAssociationMaker;
00044 class StStrangeMuDst;
00045 class StStrangeAssoc;
00046 class StStrangeMuDstMaker;
00047 class TBranch;
00048 class TClass;
00049
00050 enum StrBranchType {dataBranch=0, mcBranch=1, assocBranch};
00051
00052 class StStrangeControllerBase : public TNamed {
00053 public:
00054 StStrangeControllerBase(Int_t type);
00055 virtual ~StStrangeControllerBase();
00056 static StStrangeControllerBase* Instantiate(Int_t type);
00057
00058 TClonesArray* GetArray(Int_t branchType);
00059 TClonesArray* GetDataArray();
00060 TClonesArray* GetMcArray();
00061 TClonesArray* GetAssocArray();
00062
00063 Int_t GetN(Int_t branchType);
00064 Int_t GetN();
00065 Int_t GetNMc();
00066 Int_t GetNAssoc();
00067
00068 StStrangeMuDst* Get(Int_t i, Int_t branchType);
00069 StStrangeMuDst* Get(Int_t i=0);
00070 StStrangeMuDst* GetMc(Int_t i = 0);
00071 StStrangeAssoc* GetAssoc(Int_t i = 0);
00072
00073 virtual void Clear(Option_t* opt=0);
00074 virtual void Finish();
00075
00076
00077 virtual void Select(Int_t i=-1);
00078 virtual void Unselect(Int_t i=-1);
00079
00080 virtual void InitReadDst();
00081 virtual void InitCreateDst();
00082 virtual void InitCreateSubDst();
00083 virtual Int_t MakeReadDst() = 0;
00084 virtual Int_t MakeCreateDst(StEvent& event) = 0;
00085 virtual Int_t MakeCreateMcDst(StMcVertex* mcVert) = 0;
00086 virtual Int_t MakeCreateSubDst();
00087
00088 TClass* GetDataClass() const;
00089 TClass* GetMcClass() const;
00090 TClass* GetAssocClass() const;
00091
00092 void PrintNumMc();
00093 const char* GetMcName() const;
00094 const char* GetAssocName() const;
00095 void SetBufferSize(Int_t b);
00096 static StStrangeMuDstMaker* currentMaker;
00097
00098 protected:
00099 StStrangeControllerBase* GetDstController();
00100 void PrintNumCand(const char* text, Int_t num);
00101 TBranch* AssignBranch(const char* name, TClonesArray** address);
00102
00103 Bool_t doMc;
00104
00105 TClonesArray* dataArray;
00106 TClonesArray* mcArray;
00107 TClonesArray* assocArray;
00108 TClonesArray* tempArray;
00109
00110 StStrangeMuDstMaker* masterMaker;
00111 StStrangeMuDstMaker* dstMaker;
00112 StAssociationMaker* assocMaker;
00113
00114 TTree* tree;
00115 char* file;
00116 Int_t dstType;
00117 TClass* dataClass;
00118 TClass* mcClass;
00119 TClass* assocClass;
00120
00121
00122 TArrayI* selections;
00123 TArrayS* keepers;
00124
00125
00126 Int_t nEntries;
00127
00128
00129 Int_t entries;
00130 Int_t mcEntries;
00131 Int_t assocEntries;
00132
00133 Int_t increment;
00134 Int_t max;
00135 Int_t bsize;
00136 TString mcName;
00137 TString assocName;
00138
00139 private:
00140 ClassDef(StStrangeControllerBase,3)
00141 };
00142
00143 inline TClonesArray* StStrangeControllerBase::GetDataArray()
00144 { return dataArray; }
00145 inline TClonesArray* StStrangeControllerBase::GetMcArray()
00146 { return mcArray; }
00147 inline TClonesArray* StStrangeControllerBase::GetAssocArray()
00148 { return assocArray; }
00149
00150 inline Int_t StStrangeControllerBase::GetN(Int_t branchType)
00151 { TClonesArray* array = GetArray(branchType);
00152 return (array ? array->GetEntriesFast() : 0); }
00153 inline Int_t StStrangeControllerBase::GetN()
00154 { return (dataArray ? dataArray->GetEntriesFast() : 0); }
00155 inline Int_t StStrangeControllerBase::GetNMc()
00156 { return (mcArray ? mcArray->GetEntriesFast() : 0); }
00157 inline Int_t StStrangeControllerBase::GetNAssoc()
00158 { return (assocArray ? assocArray->GetEntriesFast() : 0); }
00159
00160 inline StStrangeMuDst* StStrangeControllerBase::Get(Int_t i, Int_t branchType)
00161 { TClonesArray* array = GetArray(branchType);
00162 return (array ? (StStrangeMuDst*) (*array)[i] : 0); }
00163 inline StStrangeMuDst* StStrangeControllerBase::Get(Int_t i)
00164 { return (dataArray ? (StStrangeMuDst*) (*dataArray)[i] : 0); }
00165 inline StStrangeMuDst* StStrangeControllerBase::GetMc(Int_t i)
00166 { return (mcArray ? (StStrangeMuDst*) (*mcArray)[i] : 0); }
00167 inline StStrangeAssoc* StStrangeControllerBase::GetAssoc(Int_t i)
00168 { return (assocArray ? (StStrangeAssoc*) (*assocArray)[i] : 0); }
00169
00170 inline TClass* StStrangeControllerBase::GetDataClass() const
00171 { return dataClass; }
00172 inline TClass* StStrangeControllerBase::GetMcClass() const
00173 { return mcClass; }
00174 inline TClass* StStrangeControllerBase::GetAssocClass() const
00175 { return assocClass; }
00176
00177 inline const char* StStrangeControllerBase::GetMcName() const
00178 { return mcName.Data(); }
00179 inline const char* StStrangeControllerBase::GetAssocName() const
00180 { return assocName.Data(); }
00181
00182 inline void StStrangeControllerBase::SetBufferSize(Int_t b) { bsize = b; }
00183 #endif