00001
00002
00003
00004
00005
00010 #ifndef StMuChainMaker_hh
00011 #define StMuChainMaker_hh
00012
00013
00014 #include <vector>
00015 #include <utility>
00016 #include <string>
00017 #if !defined(ST_NO_NAMESPACES)
00018 using namespace std;
00019 #endif
00020
00021
00022 typedef pair<string,int> StMuStringIntPair;
00023 typedef vector<StMuStringIntPair> StMuStringIntPairVector;
00024 typedef vector<StMuStringIntPair>::iterator StMuStringIntPairVectorIterator;
00025
00026 class TChain;
00027 class StMuDbReader;
00028
00029 class StMuChainMaker {
00030 public:
00031 StMuChainMaker(const char* name="MuDst");
00032 virtual ~StMuChainMaker();
00033 static void setUseFileCatalog(const char* connection="mysql://duvall.star.bnl.gov:3306/FileCatalog_BNL") {
00034 mSQLConnection = string(connection);
00035 }
00036
00037 TChain* make(string dir, string file, string filter, int maxFiles=10);
00038 void fromFileCatalog(string file);
00039 void fromList(string file);
00040 void fromFile(string file);
00041 void fromDir(string dir);
00042
00043 void subFilter(string filter);
00044 string basename(string);
00045 string dirname(string);
00046 string buildFileName(string dir, string fileName, string extention);
00047
00048 protected:
00049 static string mSQLConnection;
00050 TChain *mChain;
00051 StMuDbReader* mDbReader;
00052 string mSubFilters[100];
00053 string mTreeName;
00054 int mFileCounter;
00055 int mMaxFiles;
00056 StMuStringIntPairVector mFileList;
00057 bool pass(string file, string* filters);
00058 void add(StMuStringIntPairVector);
00059 void add(StMuStringIntPair);
00060
00061 ClassDef(StMuChainMaker,0)
00062 };
00063
00064 #endif
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112