00001
00002
00003 #include "StBET4pMakerImpBuilder.h"
00004 #include "StBET4pMakerImp.h"
00005
00006 #include "StjTPCMuDst.h"
00007 #include "StjTPCRandomMuDst.h"
00008 #include "StjBEMCMuDst.h"
00009 #include "StjEEMCMuDst.h"
00010 #include "StjTPCNull.h"
00011 #include "StjBEMCNull.h"
00012 #include "StjEEMCNull.h"
00013
00014 #include "StjBEMCSockeVariation.h"
00015
00016 #include "StjTPCTree.h"
00017 #include "StjBEMCTree.h"
00018
00019 #include "StjTrackListCut.h"
00020
00021 #include "StjTrackCutDca.h"
00022 #include "StjTrackCutDcaPtDependent.h"
00023 #include "StjTrackCutEta.h"
00024 #include "StjTrackCutPossibleHitRatio.h"
00025 #include "StjTrackCutChi2.h"
00026 #include "StjTrackCutLastPoint.h"
00027
00028 #include "StjTowerEnergyListCut.h"
00029
00030 #include "StjTowerEnergyCut2003BemcTower.h"
00031 #include "StjTowerEnergyCutBemcWestOnly.h"
00032 #include "StjTowerEnergyCutEnergy.h"
00033 #include "StjTowerEnergyCutBemcStatus.h"
00034 #include "StjTowerEnergyCutAdc.h"
00035
00036 #include "StjTowerEnergyListVariation.h"
00037 #include "StjTowerEnergyVariationEnergy.h"
00038
00039 #include "StjAbstractTowerEnergyCorrectionForTracks.h"
00040
00041 StBET4pMakerImp* StBET4pMakerImpBuilder::build(bool useTPC, bool useBEMC, bool useEEMC,
00042 bool use2003Cuts, bool use2005Cuts, bool use2006Cuts, bool use2009Cuts,
00043 bool useBEMCEnergyVariation, double bemcEnergyVariationRatio,
00044 bool useRandomSelector,
00045 StMuDstMaker* uDstMaker, bool doTowerSwapFix,
00046 StjAbstractTowerEnergyCorrectionForTracks* correctTowerEnergyForTracks,
00047 double randomSelectorProb, bool randomSelectorAt, unsigned int randomSelectorSeed)
00048 {
00049 StjTPC* tpc;
00050 StjTrackListCut* tpcCut = new StjTrackListCut();
00051 if( !useTPC ) {
00052 tpc = new StjTPCNull();
00053 } else {
00054 if ( !useRandomSelector )
00055 {
00056 tpc = new StjTPCMuDst();
00057 }
00058 else
00059 {
00060 tpc = new StjTPCRandomMuDst(uDstMaker, randomSelectorProb, randomSelectorAt, randomSelectorSeed);
00061 }
00062 tpcCut->addCut(new StjTrackCutDca());
00063 if(use2006Cuts) tpcCut->addCut(new StjTrackCutDcaPtDependent());
00064 if(use2009Cuts) tpcCut->addCut(new StjTrackCutChi2);
00065 tpcCut->addCut(new StjTrackCutEta());
00066 tpcCut->addCut(new StjTrackCutPossibleHitRatio());
00067 tpcCut->addCut(new StjTrackCutLastPoint);
00068 }
00069
00070 StjBEMC* bemc;
00071 StjTowerEnergyListCut* bemcCut = new StjTowerEnergyListCut();
00072 if( !useBEMC ) {
00073 bemc = new StjBEMCNull();
00074 } else {
00075 bemc = new StjBEMCMuDst(doTowerSwapFix);
00076
00077 if(use2003Cuts) bemcCut->addCut(new StjTowerEnergyCut2003BemcTower());
00078 if(use2005Cuts) bemcCut->addCut(new StjTowerEnergyCutBemcWestOnly());
00079 bemcCut->addCut(new StjTowerEnergyCutEnergy());
00080 bemcCut->addCut(new StjTowerEnergyCutBemcStatus());
00081 bemcCut->addCut(new StjTowerEnergyCutAdc());
00082 }
00083
00084 if( useBEMCEnergyVariation ) {
00085 StjTowerEnergyListVariation* variation = new StjTowerEnergyListVariation;
00086 variation->addVariation(new StjTowerEnergyVariationEnergy(bemcEnergyVariationRatio));
00087 bemc = new StjBEMCSockeVariation(bemc, variation);
00088 }
00089
00090 StjEEMC* eemc;
00091 if( !useEEMC ) {
00092 eemc = new StjEEMCNull();
00093 } else {
00094 eemc = new StjEEMCMuDst();
00095 }
00096
00097 StBET4pMakerImp* ret = new StBET4pMakerImp(tpc, tpcCut, bemc, bemcCut, correctTowerEnergyForTracks, eemc);
00098
00099 return ret;
00100 }
00101