00001
00002
00003
00004
00005
00006
00007
00008
00009
00011
00012 #ifndef _ALPHABANKS_H_
00013 #define _ALPHABANKS_H_
00014
00015 #include <vector>
00016 #include <map>
00017 #include <TObject.h>
00018 #include "AlTrack.h"
00019 #include "AlMuon.h"
00020 #include "AlEflw.h"
00021 #include "AlGamp.h"
00022 #include "AlMCtruth.h"
00023 #include "AlElec.h"
00024 #include "AlEvent.h"
00025 #include "AlRun.h"
00026 #include "AlConcreteVertices.h"
00027 class HepLorentzVector;
00028 template <class T> class AlephCollection;
00029 #include "BankClasses.h"
00030 #include "BankPatterns.h"
00031
00032 class AlphaBanks : public TObject
00033 {
00034 public:
00035 enum DataSource { BOS, ROOT };
00036 AlphaBanks(DataSource src=ROOT);
00037 virtual ~AlphaBanks();
00038 void LoadFromBos();
00039 void InitObjectStructure();
00040 AlephCollection< AlGamp >& GampV() ;
00041 AlephCollection< AlGamp* > GampPV() ;
00042 AlephCollection< AlEflw >& EflwV() ;
00043 AlephCollection< AlEflw* > EflwPV() ;
00044 AlephCollection< AlTrack >& TrackV() ;
00045 AlephCollection< AlTrack* > TrackPV() ;
00046 AlephCollection< AlTrack >& V0TrackV() ;
00047 AlephCollection< AlTrack* > V0TrackPV() ;
00048 AlephCollection< AlTrack >& StdV0V() ;
00049 AlephCollection< AlTrack* > StdV0PV() ;
00050 AlephCollection< AlTrack >& LongV0V() ;
00051 AlephCollection< AlTrack* > LongV0PV() ;
00052 AlephCollection< AlMCtruth >& MCtruthV() ;
00053 AlephCollection< AlMCtruth* > MCtruthPV() ;
00054 AlephCollection< AlMuon >& MuonV() ;
00055 AlephCollection< AlMuon* > MuonPV() ;
00056 AlephCollection< AlElec >& ElecV() ;
00057 AlephCollection< AlElec* > ElecPV() ;
00058 AlVertex& MainVertex();
00059 AlVertex* MainVertexP();
00060 AlephCollection< AlVertex >& SecVerticesV() ;
00061 AlephCollection< AlVertex* > SecVerticesPV() ;
00062 AlephCollection< AlVertex >& MCverticesV() ;
00063 AlephCollection< AlVertex* > MCverticesPV() ;
00064 AlephCollection< AlObject* > ObjectPV() ;
00065 AlEvent& Event() {return _Event;}
00066 AlRun& Run() {return _Run;}
00067 void addObject(AlObject* obj);
00068 template <class T> void AlphaBanks::addObject(AlephCollection<T>);
00069 bool isValid() const;
00070 private:
00071 vector<QVEC> qvec;
00072 vector<QVRT> qvrt;
00073 QEXT qext;
00074 QHAC qhac;
00075 int KFCHT, KLCHT, KNCHT, OKFCHT,
00076 KFCOT, KLCOT, KNCOT, OKFCOT,
00077 KFIST, KLIST, KNIST, OKFIST,
00078 KFAST, KLAST, KNAST, OKFAST,
00079 KFRET, KLRET, KNRET, OKFRET,
00080 KFEFT, KLEFT, KNEFT, OKFEFT,
00081 KFNET, KLNET, KNNET, OKFNET,
00082 KFGAT, KLGAT, KNGAT, OKFGAT,
00083 KFJET, KLJET, KNJET, OKFJET,
00084 KFMCT, KLMCT, KNMCT, OKFMCT,
00085 KFV0T, KLV0T, KNV0T, OKFV0T,
00086 KFLVT, KLLVT, KNLVT, OKFLVT,
00087 KFDCT, KLDCT, KNDCT, OKFDCT,
00088 KFREV, KLREV, KNREV, OKFREV,
00089 KFMCV, KLMCV, KNMCV, OKFMCV;
00090 AlephCollection< AlGamp > Gamp;
00091 AlephCollection< AlEflw > Eflw;
00092 AlephCollection< AlTrack > Track;
00093 AlephCollection< AlTrack > V0Track;
00094 AlephCollection< AlTrack > StdV0;
00095 AlephCollection< AlTrack > LongV0;
00096 AlephCollection< AlMCtruth > MCtruth;
00097 AlephCollection< AlMuon > Muon;
00098 AlephCollection< AlElec > Elec;
00099 AlephCollection< AlVertex > SecVertices;
00100 AlephCollection< AlVertex > MCvertices;
00101 AlVertex _MainVertex;
00102 AlephCollection< AlObject* > Objects;
00103 AlEvent _Event;
00104 AlRun _Run;
00105 map<AlTrack*,int> TEmap;
00106 bool _Valid;
00107 ClassDef(AlphaBanks,1)
00108 };
00109 #endif
00110