00001
00005 #include <Stiostream.h>
00006 #include "StEventTypes.h"
00007 #include "StMcEventTypes.hh"
00008 #include "StEEmcPool/StEEmcAssociationMaker/StEEmcAssociationMaker.h"
00009 #include "StEEmcMatchMaker.h"
00010
00011 ClassImp(StEEmcMatchMaker)
00012
00013
00014 StEEmcMatchMaker::StEEmcMatchMaker(const char *name):StMaker(name)
00015 {
00016 }
00017
00018 StEEmcMatchMaker::~StEEmcMatchMaker()
00019 {
00020 }
00021
00022 Int_t StEEmcMatchMaker::Init()
00023 {
00024 return StMaker::Init();
00025 }
00026
00027 Int_t StEEmcMatchMaker::Make()
00028 {
00029 #if 0
00030 const TString detname[] = {"etow", "eprs", "esmdu", "esmdv"};
00031 const TString part[] = {"none", "gamma", "e+", "e-", "nu",
00032 "mu+", "mu-", "pi0", "pi+",
00033 "pi-", "k0l", "k+", "k-",
00034 "n", "p", "p-", "k0s"};
00035
00036 StEEmcAssociationMaker *assoc =
00037 (StEEmcAssociationMaker*)GetMaker("EEmcAssoc");
00038 if(assoc) {
00039
00040
00041 for(int i = 0; i < 4; i++) {
00042 cout <<"-----------------------------------------------------\n";
00043 cout <<"ASSOCIATION FOR DETECTOR "<<detname[i].Data()<<endl;
00044
00045
00046 multiEEmcTrackCluster* tMap=assoc->getTrackClusterMap(detname[i].Data());
00047 if(tMap)
00048 {
00049 cout <<"\nTrack->Cluster Association Map\n";
00050 StMcTrack* oldTrack;
00051 int nTrack = 0;
00052 int nCluster;
00053 for(multiEEmcTrackClusterIter j=tMap->begin(); j!=tMap->end(); j++)
00054 {
00055 StMcTrack* track = (StMcTrack*)(*j).first;
00056 if(!track) continue;
00057
00058
00059 if(track != oldTrack) {
00060 if(track->geantId() > 16) continue;
00061 nTrack++;
00062 cout <<"\n"<< nTrack
00063 << " McTrack" << "(" <<part[track->geantId()].Data() << ")"
00064 << " pt = " << track->pt()
00065 << ", TReta = " <<track->pseudoRapidity() << endl;
00066 nCluster = 0;
00067 }
00068
00069 oldTrack = (StMcTrack*)(*j).first;
00070
00071 StEEmcClusterAssociation* value =
00072 (StEEmcClusterAssociation*)(*j).second;
00073 if(value)
00074 {
00075 StEmcCluster *cluster = (StEmcCluster*) value->getCluster();
00076
00077 if(cluster)
00078 {
00079 nCluster++;
00080 cout << " " << nCluster << " Cluster " << endl;
00081 cout << " E=" << cluster->energy()
00082 << ", eta=" << cluster->eta()
00083 << ", phi=" << cluster->phi()
00084 << ", FrTr=" << value->getFractionTrack()
00085 << ", FrCl=" << value->getFractionCluster()<<endl;
00086
00087
00088 }
00089 }
00090 }
00091 }
00092
00093
00094 multiEEmcClusterTrack* cMap=assoc->getClusterTrackMap(detname[i].Data());
00095 if(cMap)
00096 {
00097 cout <<"\nCluster->Track Association Map\n";
00098 StEmcCluster *oldCluster;
00099 int nCluster = 0;
00100 int nTrack;
00101 for(multiEEmcClusterTrackIter j=cMap->begin(); j!=cMap->end(); j++)
00102 {
00103 StEmcCluster *cluster = (StEmcCluster*)(*j).first;
00104 if(!cluster) continue;
00105
00106
00107 if(cluster != oldCluster) {
00108 nTrack = 0;
00109 nCluster++;
00110 cout <<"\n"<< nCluster << " Cluster"
00111 << " E=" << cluster->energy()
00112 << ", eta=" << cluster->eta()
00113 << ", phi="<< cluster->phi() << endl;
00114 }
00115
00116 oldCluster = (StEmcCluster*)(*j).first;
00117
00118 StEEmcClusterAssociation* value =
00119 (StEEmcClusterAssociation*)(*j).second;
00120 if(value)
00121 {
00122 StMcTrack* track = (StMcTrack*)value->getTrack();
00123 if(track)
00124 {
00125 nTrack++;
00126 cout << " " << nTrack
00127 << " McTrack" << "(" <<part[track->geantId()].Data() << ")"<<endl
00128 << " pt=" << track->pt()
00129 << ", TReta=" <<track->pseudoRapidity()
00130 << ", FrTr = " <<value->getFractionTrack()
00131 <<", FrCl = " <<value->getFractionCluster()<<endl;
00132
00133
00134 }
00135 }
00136 }
00137 }
00138 }
00139
00140 multiEEmcTrackPoint* tMap1 = assoc->getTrackPointMap();
00141 if(tMap1)
00142 {
00143 cout <<"\n===========================================================\n";
00144 cout <<"\nTrack->Point Association Map\n";
00145 StMcTrack* oldTrack;
00146 int nTrack = 0;
00147 int nPoint;
00148 for(multiEEmcTrackPointIter j=tMap1->begin(); j!=tMap1->end(); j++)
00149 {
00150 StMcTrack* track = (StMcTrack*)(*j).first;
00151 if(!track) continue;
00152
00153
00154 if(track != oldTrack) {
00155 if(track->geantId() > 16) continue;
00156 nTrack++;
00157 cout <<"\n"<< nTrack
00158 << " McTrack" << "(" <<part[track->geantId()].Data() << ")"
00159 << " pt = " << track->pt()
00160 << ", TReta = " <<track->pseudoRapidity() << endl;
00161 nPoint = 0;
00162 }
00163
00164 oldTrack = (StMcTrack*)(*j).first;
00165
00166 StEEmcPointAssociation* value =
00167 (StEEmcPointAssociation*)(*j).second;
00168 if(value)
00169 {
00170 StEmcPoint *point = (StEmcPoint*) value->getPoint();
00171
00172 if(point)
00173 {
00174 nPoint++;
00175 cout << " " << nPoint << " Point "
00176 << " E=" << point->energy()
00177 << ", Assoc.=" << value->getAssociation()
00178 << ", det:";
00179 for(int i = 0; i< 4; i++)
00180 if (value->getAssociation(i+1) == 1)
00181 cout << " " << detname[i].Data();
00182 cout << endl;
00183
00184
00185 }
00186 }
00187 }
00188 }
00189
00190
00191 multiEEmcPointTrack* pMap = assoc->getPointTrackMap();
00192 if(pMap)
00193 {
00194 cout <<"\nPoint->Track Association Map\n";
00195 StEmcPoint *oldPoint;
00196 int nPoint = 0;
00197 int nTrack;
00198 for(multiEEmcPointTrackIter j=pMap->begin(); j!=pMap->end(); j++)
00199 {
00200 StEmcPoint *point = (StEmcPoint*)(*j).first;
00201 if(!point) continue;
00202
00203 StEEmcPointAssociation* value =
00204 (StEEmcPointAssociation*)(*j).second;
00205
00206
00207 if(point != oldPoint) {
00208 nTrack = 0;
00209 nPoint++;
00210 cout <<"\n"<< nPoint << " Point"
00211 << " E=" << point->energy()
00212 << ", Assoc.=" << value->getAssociation();
00213 for(int i = 0; i< 4; i++) {
00214 if (value->getAssociation(i+1) == 1)
00215 cout << " det: " << detname[i].Data();
00216 }
00217 cout << endl;
00218 }
00219
00220 oldPoint = (StEmcPoint*)(*j).first;
00221
00222 if(value)
00223 {
00224 StMcTrack* track = (StMcTrack*)value->getTrack();
00225 if(track)
00226 {
00227 nTrack++;
00228 cout << " " << nTrack
00229 << " McTrack" << "(" <<part[track->geantId()].Data() << ")"
00230 << " pt=" << track->pt()
00231 << ", TReta=" <<track->pseudoRapidity() << endl;
00232
00233
00234 }
00235 }
00236 }
00237 }
00238 }
00239 #endif
00240 return kStOk;
00241 }
00242
00243
00244 Int_t StEEmcMatchMaker::Finish()
00245 {
00246 return StMaker::Finish();
00247 }
00248
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262