00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 class StChain;
00012 class StIOMaker;
00013 class StMuDstMaker;
00014 class StMuEEmcPreAnalysisMaker;
00015 class StMuEEmcPreClusterMaker;
00016 class StMuDbReader;
00017 class StEEmcDb;
00018 class St_db_Maker;
00019
00020 StChain *chain;
00021 StIOMaker *ioMaker;
00022 StMuDstMaker *muDstMaker;
00023 StMuEEmcPreAnalysisMaker *muEEmcAnal;
00024 StMuEEmcPreClusterMaker *muEEmcClust;
00025 StMuDbReader *muDb;
00026 StEEmcDb *eemdDb;
00027 St_db_Maker *starDb;
00028
00029 #include <iomanip>
00030 #include <vector>
00031
00032 void runEEmcPreCluster ( Int_t nevents = 100,
00033 Char_t *muDst = "MuDst/mcPi0n_field_onelectron_10000_06TC05_20.MuDst.root",
00034 Char_t *output = "output.root"
00035 );
00036
00038
00039 void runEEmcPreCluster ( Int_t nevents,
00040 Char_t *muDst,
00041 Char_t *output ) {
00042
00043 if ( output != "" )
00044 TFile *f = new TFile( output, "RECREATE" );
00045
00047
00048
00049
00050 TH2F *hPre1VsTow = new TH2F("hPre1VsTow", "Preshower(1) energy deposit vs reco tower E", 100, 0., 20., 500, 0., 0.08);
00051 TH2F *hPre2VsTow = new TH2F("hPre2VsTow", "Preshower(2) energy deposit vs reco tower E", 100, 0., 20., 500, 0., 0.08);
00052 TH2F *hPostVsTow = new TH2F("hPostVsTow", "Postshower energy deposit vs reco tower E", 100, 0., 20., 500, 0., 0.08);
00053 TH2F *hPre1VsPre2 = new TH2F("hPre1VsPre2","Preshower(1) energy deposit vs preshower(2) energy deposit", 500, 0., 0.08, 500, 0., 0.08);
00054
00055
00057
00058
00059
00060 gROOT -> LoadMacro("$STAR/StRoot/StMuDSTMaker/COMMON/macros/loadSharedLibraries.C");
00061 loadSharedLibraries();
00062 gSystem->Load("StEEmcUtil");
00063 gSystem->Load("StMuEEmcPreAnalysisMaker.so");
00064 gSystem->Load("StDbLib");
00065 gSystem->Load("StDbBroker");
00066 gSystem->Load("St_db_Maker");
00067 gSystem->Load("StEEmcDbMaker");
00068
00069
00071
00072
00073
00074 chain = new StChain("StChain");
00075 muDstMaker = new StMuDstMaker(0,0,"",muDst,"MuDst.root",1);
00076 muDb = StMuDbReader::instance();
00077
00078 starDb = new St_db_Maker("StarDb", "MySQL:StarDb");
00079 new StEEmcDbMaker("eemcDb");
00080
00081 muEEmcAnal = new StMuEEmcPreAnalysisMaker();
00082 muEEmcClust = new StMuEEmcPreClusterMaker();
00083
00085
00086
00087
00088 chain -> Init();
00089 chain -> ls(3);
00090 eemcDb = (StEEmcDb*)chain->GetDataSet("StEEmcDb");
00091 assert(eemcDb);
00092
00093 eemcDb -> setTimeStampDay(20040101);
00094 eemcDb -> setPreferedFlavor( "set492", "eemcPMTcal" );
00095
00097
00098
00099
00100
00101 Int_t status = 0;
00102 Int_t ievent = 0;
00103 while ( !status && ievent < nevents ) {
00104
00105
00106 std::cout << "Processing event number " << ievent << std::endl;
00107
00108
00109 chain -> Clear();
00110
00111
00112 status = chain -> Make();
00113
00114 for ( Int_t i = 0; i < muEEmcClust -> getNumClusters(); i++ ) {
00115
00116 StMuEEmcCluster cluster = muEEmcClust -> getCluster(i);
00117
00118 Float_t energy_tow = cluster.getEnergy(0);
00119 Float_t energy_pre1 = cluster.getEnergy(1);
00120 Float_t energy_pre2 = cluster.getEnergy(2);
00121 Float_t energy_post = cluster.getEnergy(3);
00122
00123 hPre1VsTow -> Fill( energy_tow, energy_pre1 );
00124 hPre2VsTow -> Fill( energy_tow, energy_pre2 );
00125 hPostVsTow -> Fill( energy_tow, energy_post );
00126 hPre1VsPre2 -> Fill ( energy_pre2, energy_pre1 );
00127
00128 }
00129
00130
00131 ievent++;
00132
00133 }
00134
00135 f->cd();
00136 muEEmcClust -> GetHistList() -> Write();
00137
00138 f -> Write();
00139
00140 }