00001
00002
00003
00004
00005
00007
00008 #include "TClass.h"
00009 #include "Algorithm/AlgHandle.h"
00010 #include "MuonRemoval/CandRmMu.h"
00011 #include "MuonRemoval/CandRmMuHandle.h"
00012 #include "MessageService/MsgService.h"
00013 #include "CandDigit/CandDigitHandle.h"
00014 #include "CandDigit/CandDigit.h"
00015
00016 ClassImp(CandRmMu)
00017
00018
00019 CVSID("$Id: CandRmMu.cxx,v 1.6 2008/09/17 02:56:19 tjyang Exp $");
00020
00021
00022 CandRmMu::CandRmMu()
00023 : shwvtxx(0),shwvtxy(0),shwvtxz(0),shwendx(0),shwendy(0),shwendz(0),
00024 shwvtxplane(0),shwendplane(0),shwnplane(0),shwcharge(0),
00025 vtxx(0),vtxy(0),vtxz(0),vtxdistance(0),endx(0),endy(0),endz(0),enddistance(0),
00026 vtxp(0),endp(0),npln(0),prng(0),pcrv(0),pvdx(0),pvdy(0), pvdz(0),zenith(0),azimuth(0),
00027 fitp(0),endc(0),pass(0),pmux(0),pmuy(0),pmuz(0),qp(0),
00028 mrmpmux(0),mrmpmuy(0),mrmpmuz(0),mrmQ2(0),mrmEshw(0),
00029 fOrigEvtIndex(-1),fMaxTrkPlane(0),
00030 fNMuonDig(0),fNMuonDigRetained(0),fNShwDig(0),fNShwDigRetained(0),
00031 fNShwDigAtVtx(0),fNShwDigRetainedAtVtx(0),fNShwPE(0),fNShwPERetained(0),
00032 fNShwPEAtVtx(0),fNShwPERetainedAtVtx(0),fNRetained(0),fNRetainedMuon(0),
00033 fNRetainedShw(0),fNRetainedBoth(0),fPERetained(0),fPERetainedMuon(0),
00034 fPERetainedShw(0),fPERetainedBoth(0),fNRejected(0),fNRejectedMuon(0),
00035 fNRejectedShw(0),fNRejectedBoth(0),fNRejShw(0),fNRejShwMaxTrk(0),
00036 fNRejShwFakeTrk(0),fNRejShwMix(0)
00037 {
00038 MSG("Cand", Msg::kDebug)
00039 << "Begin CandRmMu::CandRmMu() ctor: " << endl
00040 << "UidInt = " << GetUidInt()
00041 << ", ArchUidInt " << GetArchUidInt() << endl
00042 << "No. of links = " << GetNLinks() << endl
00043 << "End CandRmMu::CandRmMu() ctor." << endl;
00044 }
00045
00046
00047 CandRmMu::CandRmMu(AlgHandle &ah) :
00048 CandBase(ah),
00049 shwvtxx(0),shwvtxy(0),shwvtxz(0),shwendx(0),shwendy(0),shwendz(0),
00050 shwvtxplane(0),shwendplane(0),shwnplane(0),shwcharge(0),
00051 vtxx(0),vtxy(0),vtxz(0),vtxdistance(0),endx(0),endy(0),endz(0),enddistance(0),
00052 vtxp(0),endp(0),npln(0),prng(0),pcrv(0),pvdx(0),pvdy(0),pvdz(0),zenith(0),azimuth(0),
00053 fitp(0),endc(0),pass(0),pmux(0),pmuy(0),pmuz(0),qp(0),
00054 mrmpmux(0),mrmpmuy(0),mrmpmuz(0),mrmQ2(0),mrmEshw(0),
00055 fOrigEvtIndex(-1),fMaxTrkPlane(0),
00056 fNMuonDig(0),fNMuonDigRetained(0),fNShwDig(0),fNShwDigRetained(0),
00057 fNShwDigAtVtx(0),fNShwDigRetainedAtVtx(0),fNShwPE(0),fNShwPERetained(0),
00058 fNShwPEAtVtx(0),fNShwPERetainedAtVtx(0),fNRetained(0),fNRetainedMuon(0),
00059 fNRetainedShw(0),fNRetainedBoth(0),fPERetained(0),fPERetainedMuon(0),
00060 fPERetainedShw(0),fPERetainedBoth(0),fNRejected(0),fNRejectedMuon(0),
00061 fNRejectedShw(0),fNRejectedBoth(0),fNRejShw(0),fNRejShwMaxTrk(0),
00062 fNRejShwFakeTrk(0),fNRejShwMix(0)
00063 {
00064
00065
00066
00067
00068
00069
00070
00071 }
00072
00073
00074 CandRmMu::CandRmMu(AlgHandle &ah, CandHandle &ch,
00075 CandContext &cx) :
00076 CandBase(ah),
00077 shwvtxx(0),shwvtxy(0),shwvtxz(0),shwendx(0),shwendy(0),shwendz(0),
00078 shwvtxplane(0),shwendplane(0),shwnplane(0),shwcharge(0),
00079 vtxx(0),vtxy(0),vtxz(0),vtxdistance(0),endx(0),endy(0),endz(0),enddistance(0),
00080 vtxp(0),endp(0),npln(0),prng(0),pcrv(0),pvdx(0),pvdy(0),pvdz(0),zenith(0),azimuth(0),
00081 fitp(0),endc(0),pass(0),pmux(0),pmuy(0),pmuz(0),qp(0),
00082 mrmpmux(0),mrmpmuy(0),mrmpmuz(0),mrmQ2(0),mrmEshw(0),
00083 fOrigEvtIndex(-1),fMaxTrkPlane(0),
00084 fNMuonDig(0),fNMuonDigRetained(0),fNShwDig(0),fNShwDigRetained(0),
00085 fNShwDigAtVtx(0),fNShwDigRetainedAtVtx(0),fNShwPE(0),fNShwPERetained(0),
00086 fNShwPEAtVtx(0),fNShwPERetainedAtVtx(0),fNRetained(0),fNRetainedMuon(0),
00087 fNRetainedShw(0),fNRetainedBoth(0),fPERetained(0),fPERetainedMuon(0),
00088 fPERetainedShw(0),fPERetainedBoth(0),fNRejected(0),fNRejectedMuon(0),
00089 fNRejectedShw(0),fNRejectedBoth(0),fNRejShw(0),fNRejShwMaxTrk(0),
00090 fNRejShwFakeTrk(0),fNRejShwMix(0)
00091 {
00092 CreateLocalHandle();
00093 MSG("Cand", Msg::kDebug)
00094 << "Begin CandRmMu::CandRmMu(AlgHandle &, CandHandle &, "
00095 << "CandContext &) ctor: " << endl
00096 << "UidInt = " << GetUidInt()
00097 << ", ArchUidInt " << GetArchUidInt() << endl
00098 << "No. of links = " << GetNLinks() << endl
00099 << "End CandRmMu::CandRmMu(AlgHandle &, CandHandle &, "
00100 << "CandContext &) ctor." << endl;
00101
00102
00103 {
00104 CandRmMuHandle csh(this);
00105 ch = csh;
00106 }
00107 ah.RunAlg(ch, cx);
00108
00109 }
00110
00111
00112 CandRmMu::CandRmMu(const CandRmMu &rhs) :
00113 CandBase(rhs),
00114 shwvtxx(0),shwvtxy(0),shwvtxz(0),shwendx(0),shwendy(0),shwendz(0),
00115 shwvtxplane(0),shwendplane(0),shwnplane(0),shwcharge(0),
00116 vtxx(0),vtxy(0),vtxz(0),vtxdistance(0),endx(0),endy(0),endz(0),enddistance(0),
00117 vtxp(0),endp(0),npln(0),prng(0),pcrv(0),pvdx(0),pvdy(0),pvdz(0),zenith(0),azimuth(0),
00118 fitp(0),endc(0),pass(0),pmux(0),pmuy(0),pmuz(0),qp(0),
00119 mrmpmux(0),mrmpmuy(0),mrmpmuz(0),mrmQ2(0),mrmEshw(0),
00120 fOrigEvtIndex(-1),fMaxTrkPlane(0),
00121 fNMuonDig(0),fNMuonDigRetained(0),fNShwDig(0),fNShwDigRetained(0),
00122 fNShwDigAtVtx(0),fNShwDigRetainedAtVtx(0),fNShwPE(0),fNShwPERetained(0),
00123 fNShwPEAtVtx(0),fNShwPERetainedAtVtx(0),fNRetained(0),fNRetainedMuon(0),
00124 fNRetainedShw(0),fNRetainedBoth(0),fPERetained(0),fPERetainedMuon(0),
00125 fPERetainedShw(0),fPERetainedBoth(0),fNRejected(0),fNRejectedMuon(0),
00126 fNRejectedShw(0),fNRejectedBoth(0),fNRejShw(0),fNRejShwMaxTrk(0),
00127 fNRejShwFakeTrk(0),fNRejShwMix(0)
00128 {
00129
00130 MSG("Cand", Msg::kDebug)
00131 << "Begin CandRmMu::CandRmMu(const CandRmMu &rhs) ctor:"
00132 << endl << "UidInt = " << GetUidInt()
00133 << ", ArchUidInt " << GetArchUidInt() << endl
00134 << "No. of links = " << GetNLinks() << endl
00135 << "End CandRmMu::CandRmMu(const CandRmMu &rhs) ctor."
00136 << endl;
00137
00138 fReasonForKeeping.erase(fReasonForKeeping.begin(),
00139 fReasonForKeeping.end());
00140 TIter digitItr(rhs.GetDaughterIterator());
00141 while (const CandDigitHandle *digithandle =
00142 dynamic_cast<CandDigitHandle*>(digitItr())) {
00143 const CandDigit *digit = dynamic_cast<const CandDigit*> (digithandle->GetCandBase());
00144 fReasonForKeeping[digit] = rhs.fReasonForKeeping[digit];
00145 }
00146
00147 shwvtxx = rhs.shwvtxx;
00148 shwvtxy = rhs.shwvtxy;
00149 shwvtxz = rhs.shwvtxz;
00150 shwendx = rhs.shwendx;
00151 shwendy = rhs.shwendy;
00152 shwendz = rhs.shwendz;
00153 shwvtxplane = rhs.shwvtxplane;
00154 shwendplane = rhs.shwendplane;
00155 shwnplane = rhs.shwnplane;
00156 shwcharge = rhs.shwcharge;
00157
00158 vtxx = rhs.vtxx;
00159 vtxy = rhs.vtxy;
00160 vtxz = rhs.vtxz;
00161 vtxdistance = rhs.vtxdistance;
00162 endx = rhs.endx;
00163 endy = rhs.endy;
00164 endz = rhs.endz;
00165 enddistance = rhs.enddistance;
00166 vtxp = rhs.vtxp;
00167 endp = rhs.endp;
00168 npln = rhs.npln;
00169 prng = rhs.prng;
00170 pcrv = rhs.pcrv;
00171 pvdx = rhs.pvdx;
00172 pvdy = rhs.pvdy;
00173 pvdz = rhs.pvdz;
00174 zenith = rhs.zenith;
00175 azimuth = rhs.azimuth;
00176 fitp = rhs.fitp;
00177 endc = rhs.endc;
00178 pass = rhs.pass;
00179 pmux = rhs.pmux;
00180 pmuy = rhs.pmuy;
00181 pmuz = rhs.pmuz;
00182 qp = rhs.qp;
00183 mrmpmux = rhs.mrmpmux;
00184 mrmpmuy = rhs.mrmpmuy;
00185 mrmpmuz = rhs.mrmpmuz;
00186 mrmQ2 = rhs.mrmQ2;
00187 mrmEshw = rhs.mrmEshw;
00188 fOrigEvtIndex = rhs.fOrigEvtIndex;
00189 fMaxTrkPlane = rhs.fMaxTrkPlane;
00190 fNMuonDig = rhs.fNMuonDig;
00191 fNMuonDigRetained = rhs.fNMuonDigRetained;
00192 fNShwDig = rhs.fNShwDig;
00193 fNShwDigRetained = rhs.fNShwDigRetained;
00194 fNShwDigAtVtx = rhs.fNShwDigAtVtx;
00195 fNShwDigRetainedAtVtx = rhs.fNShwDigRetainedAtVtx;
00196 fNShwPE = rhs.fNShwPE;
00197 fNShwPERetained = rhs.fNShwPERetained;
00198 fNShwPEAtVtx = rhs.fNShwPEAtVtx;
00199 fNShwPERetainedAtVtx = rhs.fNShwPERetainedAtVtx;
00200 fNRetained = rhs.fNRetained;
00201 fNRetainedMuon = rhs.fNRetainedMuon;
00202 fNRetainedShw = rhs.fNRetainedShw;
00203 fNRetainedBoth = rhs.fNRetainedBoth;
00204 fPERetained = rhs.fPERetained;
00205 fPERetainedMuon = rhs.fPERetainedMuon;
00206 fPERetainedShw = rhs.fPERetainedShw;
00207 fPERetainedBoth = rhs.fPERetainedBoth;
00208 fNRejected = rhs.fNRejected;
00209 fNRejectedMuon = rhs.fNRejectedMuon;
00210 fNRejectedShw = rhs.fNRejectedShw;
00211 fNRejectedBoth = rhs.fNRejectedBoth;
00212 fNRejShw = rhs.fNRejShw;
00213 fNRejShwMaxTrk = rhs.fNRejShwMaxTrk;
00214 fNRejShwFakeTrk = rhs.fNRejShwFakeTrk;
00215 fNRejShwMix = rhs.fNRejShwMix;
00216 }
00217
00218
00219 CandRmMu::~CandRmMu()
00220 {
00221 MSG("Cand", Msg::kDebug)
00222 << "Begin CandRmMu::~CandRmMu() dtor: " << endl
00223 << "UidInt = " << GetUidInt()
00224 << ", ArchUidInt " << GetArchUidInt() << endl
00225 << "No. of links = " << GetNLinks() << endl
00226 << "End CandRmMu::~CandRmMu() dtor." << endl;
00227
00228 }
00229
00230
00231 void CandRmMu::CreateLocalHandle()
00232 {
00233 SetLocalHandle(new CandRmMuHandle(this));
00234 }
00235
00236
00237 CandRmMu *CandRmMu::Dup() const
00238 {
00239
00240
00241
00242
00243
00244 CandRmMu *cb = new CandRmMu(*this);
00245 cb->CreateLocalHandle();
00246 TIter iterdau = GetDaughterIterator();
00247 CandHandle *dau;
00248 while ((dau=(CandHandle *) iterdau())) cb->AddDaughterLink(*dau);
00249 return cb;
00250 }
00251
00252
00253 Bool_t CandRmMu::IsEquivalent(const TObject *rhs) const
00254 {
00255 if (!CandBase::IsEquivalent(rhs)) return false;
00256 TestDisplayCandBanner("CandRmMu");
00257 const CandRmMu* rCnd = dynamic_cast<const CandRmMu*>(rhs);
00258 if (rCnd == NULL) return false;
00259
00260 if(!TestEquality("fReasonForKeeping",
00261 this->fReasonForKeeping,
00262 rCnd->fReasonForKeeping)) return false;
00263
00264 if(dynamic_cast<const CandRmMu*>(rhs)->shwvtxx!=shwvtxx) return false;
00265 if(dynamic_cast<const CandRmMu*>(rhs)->shwvtxy!=shwvtxy) return false;
00266 if(dynamic_cast<const CandRmMu*>(rhs)->shwvtxz!=shwvtxz) return false;
00267 if(dynamic_cast<const CandRmMu*>(rhs)->shwendx!=shwendx) return false;
00268 if(dynamic_cast<const CandRmMu*>(rhs)->shwendy!=shwendy) return false;
00269 if(dynamic_cast<const CandRmMu*>(rhs)->shwendz!=shwendz) return false;
00270 if(dynamic_cast<const CandRmMu*>(rhs)->shwvtxplane!=shwvtxplane) return false;
00271 if(dynamic_cast<const CandRmMu*>(rhs)->shwendplane!=shwendplane) return false;
00272 if(dynamic_cast<const CandRmMu*>(rhs)->shwnplane!=shwnplane) return false;
00273 if(dynamic_cast<const CandRmMu*>(rhs)->shwcharge!=shwcharge) return false;
00274
00275 if(dynamic_cast<const CandRmMu*>(rhs)->vtxx!=vtxx) return false;
00276 if(dynamic_cast<const CandRmMu*>(rhs)->vtxy!=vtxy) return false;
00277 if(dynamic_cast<const CandRmMu*>(rhs)->vtxz!=vtxz) return false;
00278 if(dynamic_cast<const CandRmMu*>(rhs)->vtxdistance!=vtxdistance) return false;
00279 if(dynamic_cast<const CandRmMu*>(rhs)->endx!=endx) return false;
00280 if(dynamic_cast<const CandRmMu*>(rhs)->endy!=endy) return false;
00281 if(dynamic_cast<const CandRmMu*>(rhs)->endz!=endz) return false;
00282 if(dynamic_cast<const CandRmMu*>(rhs)->enddistance!=enddistance) return false;
00283 if(dynamic_cast<const CandRmMu*>(rhs)->vtxp!=vtxp) return false;
00284 if(dynamic_cast<const CandRmMu*>(rhs)->endp!=endp) return false;
00285 if(dynamic_cast<const CandRmMu*>(rhs)->npln!=npln) return false;
00286 if(dynamic_cast<const CandRmMu*>(rhs)->prng!=prng) return false;
00287 if(dynamic_cast<const CandRmMu*>(rhs)->pcrv!=pcrv) return false;
00288 if(dynamic_cast<const CandRmMu*>(rhs)->pvdx!=pvdx) return false;
00289 if(dynamic_cast<const CandRmMu*>(rhs)->pvdy!=pvdy) return false;
00290 if(dynamic_cast<const CandRmMu*>(rhs)->pvdz!=pvdz) return false;
00291 if(dynamic_cast<const CandRmMu*>(rhs)->zenith!=zenith) return false;
00292 if(dynamic_cast<const CandRmMu*>(rhs)->azimuth!=azimuth) return false;
00293 if(dynamic_cast<const CandRmMu*>(rhs)->fitp!=fitp) return false;
00294 if(dynamic_cast<const CandRmMu*>(rhs)->endc!=endc) return false;
00295 if(dynamic_cast<const CandRmMu*>(rhs)->pass!=pass) return false;
00296 if(dynamic_cast<const CandRmMu*>(rhs)->pmux!=pmux) return false;
00297 if(dynamic_cast<const CandRmMu*>(rhs)->pmuy!=pmuy) return false;
00298 if(dynamic_cast<const CandRmMu*>(rhs)->pmuz!=pmuz) return false;
00299 if(dynamic_cast<const CandRmMu*>(rhs)->qp!=qp) return false;
00300 if(dynamic_cast<const CandRmMu*>(rhs)->mrmpmux!=mrmpmux) return false;
00301 if(dynamic_cast<const CandRmMu*>(rhs)->mrmpmuy!=mrmpmuy) return false;
00302 if(dynamic_cast<const CandRmMu*>(rhs)->mrmpmuz!=mrmpmuz) return false;
00303 if(dynamic_cast<const CandRmMu*>(rhs)->mrmQ2!=mrmQ2) return false;
00304 if(dynamic_cast<const CandRmMu*>(rhs)->mrmEshw!=mrmEshw) return false;
00305 if(dynamic_cast<const CandRmMu*>(rhs)->fOrigEvtIndex!=fOrigEvtIndex) return false;
00306 if(dynamic_cast<const CandRmMu*>(rhs)->fMaxTrkPlane!=fMaxTrkPlane) return false;
00307 if(dynamic_cast<const CandRmMu*>(rhs)->fNMuonDig!=fNMuonDig) return false;
00308 if(dynamic_cast<const CandRmMu*>(rhs)->fNMuonDigRetained!=fNMuonDigRetained) return false;
00309 if(dynamic_cast<const CandRmMu*>(rhs)->fNShwDig!=fNShwDig) return false;
00310 if(dynamic_cast<const CandRmMu*>(rhs)->fNShwDigRetained!=fNShwDigRetained) return false;
00311 if(dynamic_cast<const CandRmMu*>(rhs)->fNShwDigAtVtx!=fNShwDigAtVtx) return false;
00312 if(dynamic_cast<const CandRmMu*>(rhs)->fNShwDigRetainedAtVtx!=fNShwDigRetainedAtVtx) return false;
00313 if(dynamic_cast<const CandRmMu*>(rhs)->fNShwPE!=fNShwPE) return false;
00314 if(dynamic_cast<const CandRmMu*>(rhs)->fNShwPERetained!=fNShwPERetained) return false;
00315 if(dynamic_cast<const CandRmMu*>(rhs)->fNShwPEAtVtx!=fNShwPEAtVtx) return false;
00316 if(dynamic_cast<const CandRmMu*>(rhs)->fNShwPERetainedAtVtx!=fNShwPERetainedAtVtx) return false;
00317 if(dynamic_cast<const CandRmMu*>(rhs)->fNRetained!=fNRetained) return false;
00318 if(dynamic_cast<const CandRmMu*>(rhs)->fNRetainedMuon!=fNRetainedMuon) return false;
00319 if(dynamic_cast<const CandRmMu*>(rhs)->fNRetainedShw!=fNRetainedShw) return false;
00320 if(dynamic_cast<const CandRmMu*>(rhs)->fNRetainedBoth!=fNRetainedBoth) return false;
00321 if(dynamic_cast<const CandRmMu*>(rhs)->fPERetained!=fPERetained) return false;
00322 if(dynamic_cast<const CandRmMu*>(rhs)->fPERetainedMuon!=fPERetainedMuon) return false;
00323 if(dynamic_cast<const CandRmMu*>(rhs)->fPERetainedShw!=fPERetainedShw) return false;
00324 if(dynamic_cast<const CandRmMu*>(rhs)->fPERetainedBoth!=fPERetainedBoth) return false;
00325 if(dynamic_cast<const CandRmMu*>(rhs)->fNRejected!=fNRejected) return false;
00326 if(dynamic_cast<const CandRmMu*>(rhs)->fNRejectedMuon!=fNRejectedMuon) return false;
00327 if(dynamic_cast<const CandRmMu*>(rhs)->fNRejectedShw!=fNRejectedShw) return false;
00328 if(dynamic_cast<const CandRmMu*>(rhs)->fNRejectedBoth!=fNRejectedBoth) return false;
00329 if(dynamic_cast<const CandRmMu*>(rhs)->fNRejShw!=fNRejShw) return false;
00330 if(dynamic_cast<const CandRmMu*>(rhs)->fNRejShwMaxTrk!=fNRejShwMaxTrk) return false;
00331 if(dynamic_cast<const CandRmMu*>(rhs)->fNRejShwFakeTrk!=fNRejShwFakeTrk) return false;
00332 if(dynamic_cast<const CandRmMu*>(rhs)->fNRejShwMix!=fNRejShwMix) return false;
00333
00334 return true;
00335 }
00336
00337
00338 CandRmMuHandle CandRmMu::MakeCandidate(AlgHandle &ah,
00339 CandContext &cx)
00340 {
00341 CandRmMuHandle csh;
00342 new CandRmMu(ah, csh, cx);
00343 return csh;
00344 }
00345