#include <AlgRmMu.h>
Inheritance diagram for AlgRmMu:

Public Member Functions | |
| AlgRmMu () | |
| virtual | ~AlgRmMu () |
| virtual void | RunAlg (AlgConfig &ac, CandHandle &ch, CandContext &cx) |
| virtual void | Trace (const char *c) const |
|
|
Definition at line 42 of file AlgRmMu.cxx. 00043 {
00044 }
|
|
|
Definition at line 47 of file AlgRmMu.cxx. 00048 {
00049 }
|
|
||||||||||||||||
|
Implements AlgBase. Definition at line 52 of file AlgRmMu.cxx. References abs(), CandHandle::AddDaughterLink(), digit(), RecDataRecord< T >::FindComponent(), Registry::Get(), PlexSEIdAltL::GetBestSEId(), Truthifier::GetBiggestHit(), CandContext::GetCandRecord(), CandDigitHandle::GetCharge(), CandContext::GetDataIn(), CandHandle::GetDaughterIterator(), VldContext::GetDetector(), CandFitTrackHandle::GetEMCharge(), CandRecoHandle::GetEndPlane(), CandRmMuHandle::GetFitPass(), MomNavigator::GetFragment(), DigiSignal::GetHit(), CandRmMuHandle::GetIsCont(), GetMaxTrackLikePlane(), CandContext::GetMom(), CandRmMuHandle::GetMomCurv(), CandFitTrackHandle::GetMomentumCurve(), CandFitTrackHandle::GetMomentumRange(), CandRmMuHandle::GetMomRange(), CandHandle::GetNDaughters(), DigiSignal::GetNumberOfHits(), CandFitTrackHandle::GetPass(), PlexPlaneId::GetPlane(), CandDigitHandle::GetPlexSEIdAltL(), CandDigitHandle::GetQieErrorBits(), CandDigitHandle::GetRawDigitIndex(), Truthifier::GetSignal(), VldContext::GetSimFlag(), CandDigitHandle::GetTime(), DigiSignal::GetTruth(), CandDigitHandle::GetVaErrorBits(), RecMinos::GetVldContext(), CandRmMuHandle::GetVtxDCosX(), CandRmMuHandle::GetVtxDCosY(), CandRmMuHandle::GetVtxDCosZ(), CandRecoHandle::GetVtxDirCosU(), CandRecoHandle::GetVtxDirCosV(), CandRecoHandle::GetVtxDirCosZ(), CandRecoHandle::GetVtxPlane(), CandRecoHandle::GetVtxU(), CandRecoHandle::GetVtxV(), CandRecoHandle::GetVtxZ(), CandHandle::IsEquivalent(), TruthHelper::IsMuon(), TruthHelper::IsNeutrino(), Truthifier::IsValid(), MSG, CandRmMuHandle::SetFitPass(), CandRmMuHandle::SetIsCont(), CandRmMuHandle::SetMaxTrkPlane(), CandRmMuHandle::SetMomCurv(), CandRmMuHandle::SetMomRange(), CandRmMuHandle::SetMomX(), CandRmMuHandle::SetMomY(), CandRmMuHandle::SetMomZ(), CandRmMuHandle::SetNMuonDig(), CandRmMuHandle::SetNMuonDigRetained(), CandRmMuHandle::SetNPlane(), CandRmMuHandle::SetNRejected(), CandRmMuHandle::SetNRejectedBoth(), CandRmMuHandle::SetNRejectedMuon(), CandRmMuHandle::SetNRejectedShw(), CandRmMuHandle::SetNRejShw(), CandRmMuHandle::SetNRejShwFakeTrk(), CandRmMuHandle::SetNRejShwMaxTrk(), CandRmMuHandle::SetNRejShwMix(), CandRmMuHandle::SetNRetained(), CandRmMuHandle::SetNRetainedBoth(), CandRmMuHandle::SetNRetainedMuon(), CandRmMuHandle::SetNRetainedShw(), CandRmMuHandle::SetNShwDig(), CandRmMuHandle::SetNShwDigAtVtx(), CandRmMuHandle::SetNShwDigRetained(), CandRmMuHandle::SetNShwDigRetainedAtVtx(), CandRmMuHandle::SetNShwPE(), CandRmMuHandle::SetNShwPEAtVtx(), CandRmMuHandle::SetNShwPERetained(), CandRmMuHandle::SetNShwPERetainedAtVtx(), CandRmMuHandle::SetOrigEvtIndex(), CandRmMuHandle::SetPass(), CandRmMuHandle::SetPERetained(), CandRmMuHandle::SetPERetainedBoth(), CandRmMuHandle::SetPERetainedMuon(), CandRmMuHandle::SetPERetainedShw(), CandRmMuHandle::SetQP(), CandRmMuHandle::SetReasonForKeeping(), CandRmMuHandle::SetVtxDCosX(), CandRmMuHandle::SetVtxDCosY(), CandRmMuHandle::SetVtxDCosZ(), CandRmMuHandle::SetVtxPlane(), CandRmMuHandle::SetVtxX(), CandRmMuHandle::SetVtxY(), CandRmMuHandle::SetVtxZ(), TrackEndContained(), and DigiScintHit::TrackId(). 00053 {
00054
00055 MSG("AlgRmMu", Msg::kDebug) << "Starting AlgRmMu::RunAlg()" << endl;
00056
00057 assert(ch.InheritsFrom("CandRmMuHandle"));
00058 CandRmMuHandle &crmh = dynamic_cast<CandRmMuHandle &>(ch);
00059 assert(cx.GetDataIn());
00060 assert(cx.GetDataIn()->InheritsFrom("TObjArray"));
00061
00062 const CandEventHandle *event = 0;
00063 const CandTrackHandle *track = 0;
00064 const CandDigitListHandle *digitlist = 0;
00065 const TObjArray *tary = dynamic_cast<const TObjArray*>(cx.GetDataIn());
00066 for (Int_t i=0; i<=tary->GetLast(); i++) {
00067 TObject *tobj = tary->At(i);
00068 if(tobj->InheritsFrom("CandEventHandle")) {
00069 event = dynamic_cast<CandEventHandle*> (tobj);
00070 MSG("AlgRmMu",Msg::kDebug) << "Got Event" << endl;
00071 }
00072 if(tobj->InheritsFrom("CandTrackHandle")) {
00073 track = dynamic_cast<CandTrackHandle*> (tobj);
00074 MSG("AlgRmMu",Msg::kDebug) << "Got Track" << endl;
00075 }
00076 if(tobj->InheritsFrom("CandDigitListHandle")) {
00077 digitlist = dynamic_cast<CandDigitListHandle*> (tobj);
00078 MSG("AlgRmMu",Msg::kDebug) << "Got Digitlist" << endl;
00079 }
00080 }
00081
00082 if(event==NULL || digitlist==NULL) {
00083 MSG("AlgRmMu",Msg::kError) << " Bailing out of Event event = " << event
00084 << " digitlist = " << digitlist <<endl;
00085 return;
00086 }
00087
00088 if(track==NULL) {
00089 MSG("AlgRmMu",Msg::kDebug) << "No track to remove" << endl;
00090 crmh.SetVtxX(0);
00091 crmh.SetVtxY(0);
00092 crmh.SetVtxZ(0);
00093 crmh.SetVtxPlane(0);
00094 crmh.SetNPlane(0);
00095 crmh.SetMomRange(0);
00096 crmh.SetMomCurv(0);
00097 crmh.SetVtxDCosX(0);
00098 crmh.SetVtxDCosY(0);
00099 crmh.SetVtxDCosZ(0);
00100 crmh.SetFitPass(0);
00101 crmh.SetIsCont(0);
00102 crmh.SetPass(0);
00103 crmh.SetMomX(0);
00104 crmh.SetMomY(0);
00105 crmh.SetMomZ(0);
00106 crmh.SetQP(0);
00107 crmh.SetOrigEvtIndex(-1);
00108 crmh.SetMaxTrkPlane(9999);
00109 crmh.SetNMuonDig(0);
00110 crmh.SetNMuonDigRetained(0);
00111 crmh.SetNShwDig(0);
00112 crmh.SetNShwDigRetained(0);
00113 crmh.SetNShwDigAtVtx(0);
00114 crmh.SetNShwDigRetainedAtVtx(0);
00115 crmh.SetNShwPE(0);
00116 crmh.SetNShwPERetained(0);
00117 crmh.SetNShwPEAtVtx(0);
00118 crmh.SetNShwPERetainedAtVtx(0);
00119 crmh.SetNRetained(0);
00120 crmh.SetNRetainedMuon(0);
00121 crmh.SetNRetainedShw(0);
00122 crmh.SetNRetainedBoth(0);
00123 crmh.SetPERetained(0);
00124 crmh.SetPERetainedMuon(0);
00125 crmh.SetPERetainedShw(0);
00126 crmh.SetPERetainedBoth(0);
00127 crmh.SetNRejected(0);
00128 crmh.SetNRejectedMuon(0);
00129 crmh.SetNRejectedShw(0);
00130 crmh.SetNRejectedBoth(0);
00131 crmh.SetNRejShw(0);
00132 crmh.SetNRejShwMaxTrk(0);
00133 crmh.SetNRejShwFakeTrk(0);
00134 crmh.SetNRejShwMix(0);
00135 return;
00136 }
00137
00138 CandRecord* record = dynamic_cast<CandRecord*>(cx.GetCandRecord());
00139 const VldContext &vldc = *(record->GetVldContext());
00140
00141 const CandFitTrackHandle* fittrack =
00142 dynamic_cast<const CandFitTrackHandle*>(track);
00143
00144 //set muon parameters
00145 crmh.SetVtxX(0.707106781*(fittrack->GetVtxU() - fittrack->GetVtxV()));
00146 crmh.SetVtxY(0.707106781*(fittrack->GetVtxU() + fittrack->GetVtxV()));
00147 crmh.SetVtxZ(fittrack->GetVtxZ());
00148 crmh.SetVtxPlane(fittrack->GetVtxPlane());
00149 crmh.SetNPlane(TMath::Abs(fittrack->GetEndPlane()-
00150 fittrack->GetVtxPlane())+1);
00151 crmh.SetMomRange(fittrack->GetMomentumRange());
00152 crmh.SetMomCurv(fittrack->GetMomentumCurve());
00153 crmh.SetVtxDCosX(0.707106781*(fittrack->GetVtxDirCosU()-
00154 fittrack->GetVtxDirCosV()));
00155 crmh.SetVtxDCosY(0.707106781*(fittrack->GetVtxDirCosU()+
00156 fittrack->GetVtxDirCosV()));
00157 crmh.SetVtxDCosZ(fittrack->GetVtxDirCosZ());
00158 crmh.SetFitPass(fittrack->GetPass());
00159 crmh.SetIsCont(TrackEndContained(fittrack));
00160 Int_t pass = 1;
00161 Float_t momentum = crmh.GetMomRange();
00162 if(!crmh.GetIsCont()){
00163 pass = crmh.GetFitPass();
00164 momentum = crmh.GetMomCurv();
00165 }
00166 crmh.SetPass(pass);
00167 crmh.SetMomX(crmh.GetVtxDCosX()*TMath::Abs(momentum));
00168 crmh.SetMomY(crmh.GetVtxDCosY()*TMath::Abs(momentum));
00169 crmh.SetMomZ(crmh.GetVtxDCosZ()*TMath::Abs(momentum));
00170 if(fittrack->GetMomentumCurve() > 0.001)
00171 crmh.SetQP(fittrack->GetEMCharge()/fittrack->GetMomentumCurve());
00172
00173 //hold some vectors for use later:
00174 std::vector<Float_t> stripRetained(event->GetNDaughters());
00175 std::vector<Bool_t> stripInTrack(event->GetNDaughters());
00176 for(int i=0;i<event->GetNDaughters();i++) {
00177 stripRetained[i] = 0.0;
00178 stripInTrack[i] = 0;
00179 }
00180
00181 //keep map of info to store about hit removal
00182 //keep track of digit<->strip associations
00183 std::map<const CandDigitHandle*,Int_t> infoToStore;
00184 std::multimap<Int_t,const CandDigitHandle*> eventStripMatch;
00185
00186 Int_t detector = vldc.GetDetector();
00187 //add daughter links to appropriate digits
00188 TIter digitIter(digitlist->GetDaughterIterator());
00189 TIter stpIter(event->GetDaughterIterator());
00190 Int_t stpCounter = 0;
00191 while(CandDigitHandle* digit =
00192 dynamic_cast<CandDigitHandle*>(digitIter())){
00193 infoToStore[digit] = 0;
00194 stpIter.Reset();
00195 stpCounter = 0;
00196 while(const CandStripHandle* strip =
00197 dynamic_cast<const CandStripHandle*>(stpIter())){
00198 TIter stpdigitIter(strip->GetDaughterIterator());
00199 while(const CandDigitHandle* stpdigit =
00200 dynamic_cast<CandDigitHandle*>(stpdigitIter())){
00201 if( ( digit->GetRawDigitIndex() ==
00202 stpdigit->GetRawDigitIndex()) &&
00203 ( digit->GetTime(CalTimeType::kNone) ==
00204 stpdigit->GetTime(CalTimeType::kNone) ) ){
00205 crmh.AddDaughterLink(*digit);
00206 if( (detector == 1 && digit->GetVaErrorBits()!=0) ||
00207 (detector == 2 && digit->GetQieErrorBits()!=0) ) {
00208 stripRetained[stpCounter] = -( digit->GetCharge() /
00209 stpdigit->GetCharge() );
00210 }
00211 else stripRetained[stpCounter] = 1.0;
00212 eventStripMatch.insert(pair<Int_t,const CandDigitHandle*>(stpCounter,digit));
00213 }
00214 }
00215 stpCounter+=1;
00216 }
00217 }
00218
00219 //find out which event strips are in the track:
00220 TIter trkstpItr(fittrack->GetDaughterIterator());
00221 stpIter.Reset();
00222 stpCounter = 1;
00223 while(const CandStripHandle* strip =
00224 dynamic_cast<const CandStripHandle*>(stpIter())) {
00225 trkstpItr.Reset();
00226 while(const CandStripHandle* trkStrip =
00227 dynamic_cast<const CandStripHandle*>(trkstpItr())) {
00228 if(strip->IsEquivalent(trkStrip)) {
00229 stripInTrack[stpCounter] = 1;
00230 }
00231 }
00232 stpCounter += 1;
00233 }
00234
00235 Int_t cMaxTrackLikePlanes = 6;
00236 if(!ac.Get("MaxTrackLikePlanes",cMaxTrackLikePlanes))
00237 cMaxTrackLikePlanes=6;
00238 int maxtrkplane = GetMaxTrackLikePlane(event,track,cMaxTrackLikePlanes);
00239 crmh.SetMaxTrkPlane(maxtrkplane);
00240
00241 //fill reco-related hit removal info:
00242 //loop over event strips:
00243 for(stpCounter=0;stpCounter<event->GetNDaughters();stpCounter++){
00244 bool is_retained = false;
00245 if(stripRetained[stpCounter]>0) is_retained = true;
00246 bool is_track = false;
00247 if(stripInTrack[stpCounter]==1) is_track = true;
00248 bool is_retained_scaled = false;
00249 Float_t scale_factor = 1.0;
00250 if(stripRetained[stpCounter]<0) {
00251 is_retained_scaled = true;
00252 scale_factor = TMath::Abs(stripRetained[stpCounter]);
00253 }
00254 //fill in bit-packed info:
00255 std::multimap<Int_t,const CandDigitHandle*>::iterator esm_beg;
00256 std::multimap<Int_t,const CandDigitHandle*>::iterator esm_end;
00257 esm_beg = eventStripMatch.find(stpCounter);
00258 if(esm_beg != eventStripMatch.end()){
00259 esm_end = eventStripMatch.upper_bound(stpCounter);
00260 for ( ; esm_beg != esm_end; ++esm_beg) {
00261 infoToStore[esm_beg->second] = (int(scale_factor*RmMuMask::kRMMU_SCL_FACT_SCALE)<<RmMuMask::kRMMU_NUM_SHIFT);
00262 infoToStore[esm_beg->second] |= RmMuMask::kRMMU_ISRETAIN_MASK;
00263 if (is_retained_scaled)
00264 infoToStore[esm_beg->second] |= RmMuMask::kRMMU_ISSCALED_MASK;
00265 if (is_track)
00266 infoToStore[esm_beg->second] |= RmMuMask::kRMMU_INRECOTRK_MASK;
00267 }
00268 }
00269 }
00270
00271 //do truth analysis?
00272 if(vldc.GetSimFlag()==SimFlag::kMC){
00273 //do truth analysis
00274 Truthifier* truth = new Truthifier(cx.GetMom());
00275 if(truth->IsValid()){
00276 TruthHelper* helper = new TruthHelper(cx.GetMom());
00277 SimSnarlRecord *simsnarl =
00278 dynamic_cast<SimSnarlRecord*>(cx.GetMom()->GetFragment("SimSnarlRecord"));
00279 if(simsnarl) { //simsnarl
00280 const TClonesArray* ctca =
00281 dynamic_cast<const TClonesArray*>(simsnarl->FindComponent("TClonesArray","StdHep"));
00282 const TClonesArray* neukinarray =
00283 dynamic_cast<const TClonesArray*>(simsnarl->FindComponent("TClonesArray","NeuKinList"));
00284 const REROOT_NeuKin* neukin =
00285 dynamic_cast<const REROOT_NeuKin*>(neukinarray->At(0));
00286 assert(neukin);
00287
00288 //variables to fill:
00289 Int_t nMuonDig = 0;
00290 Int_t nMuonDigRetained = 0;
00291 Int_t nShwDig = 0;
00292 Int_t nShwDigRetained = 0;
00293 Int_t nShwDigAtVtx = 0;
00294 Int_t nShwDigRetainedAtVtx = 0;
00295 Float_t peShw = 0.;
00296 Float_t peShwRetained = 0.;
00297 Float_t peShwAtVtx = 0.;
00298 Float_t peShwRetainedAtVtx = 0.;
00299 Int_t nRetained = 0;
00300 Int_t nRetainedMuon = 0;
00301 Int_t nRetainedShw = 0;
00302 Int_t nRetainedBoth = 0;
00303 Float_t peRetained = 0.;
00304 Float_t peRetainedMuon = 0.;
00305 Float_t peRetainedShw = 0.;
00306 Float_t peRetainedBoth = 0.;
00307 Int_t nRejected = 0;
00308 Int_t nRejectedMuon = 0;
00309 Int_t nRejectedShw = 0;
00310 Int_t nRejectedBoth = 0;
00311 Int_t nRejShw = 0;
00312 Int_t nRejShwMaxTrk = 0 ;
00313 Int_t nRejShwFakeTrk = 0;
00314 Int_t nRejShwMix = 0 ;
00315
00316 //loop over event strips:
00317 stpIter.Reset();
00318 stpCounter = 0;
00319 while(const CandStripHandle* strip =
00320 dynamic_cast<const CandStripHandle*>(stpIter())){ //loop over strips
00321 TIter digitItr(strip->GetDaughterIterator());
00322 while (CandDigitHandle *digit = dynamic_cast<CandDigitHandle*>(digitItr())) { //loop over digits
00323 const int planeno = digit->GetPlexSEIdAltL().GetBestSEId().GetPlane();
00324 //const int stripno = digit->GetPlexSEIdAltL().GetBestSEId().GetStrip();
00325 const CandDigitHandle tcdh = *digit;
00326 //const CandDeMuxDigitHandle* demuxdigit =
00327 //dynamic_cast<const CandDeMuxDigitHandle*>(digit);
00328
00329 bool is_retained = false;
00330 if(stripRetained[stpCounter]>0) is_retained = true;
00331 bool is_track = false;
00332 if(stripInTrack[stpCounter]==1) is_track = true;
00333 bool is_retained_scaled = false;
00334 if(stripRetained[stpCounter]<0) is_retained_scaled = true;
00335 //bool is_recoed_xtalk = (demuxdigit->GetDeMuxDigitFlagWord()&CandDeMuxDigit::kXTalk);
00336 bool is_shower = 0;
00337 bool is_muon = 0;
00338 bool is_physics = 0;
00339
00340 const DigiSignal * signal = truth->GetSignal(tcdh);
00341 const DigiScintHit* biggest_hit = truth->GetBiggestHit(tcdh);
00342 TParticle* biggest_part = NULL;
00343 if(biggest_hit!=NULL){
00344 Int_t biggest_track = abs(biggest_hit->TrackId());
00345 biggest_part = dynamic_cast<TParticle*>((*ctca)[biggest_track]);
00346 }
00347 if(signal!=NULL){
00348 is_physics = ((signal->GetTruth() & DigiSignal::kGenuine)!=0);
00349 for (UInt_t i=0;i<signal->GetNumberOfHits();i++){
00350 const DigiScintHit * hit = signal->GetHit(i);
00351 if(hit){
00352 Int_t track = abs(hit->TrackId());
00353 TParticle* part = dynamic_cast<TParticle*>((*ctca)[track]);
00354 if(!helper->IsNeutrino(part) && !helper->IsMuon(part)){
00355 is_shower=true;
00356 }
00357 if(!helper->IsNeutrino(part) && helper->IsMuon(part)){
00358 is_muon=true;
00359 }
00360 }
00361 }
00362 }
00363
00364 //fill in truth-related hit removal info:
00365 std::multimap<Int_t,const CandDigitHandle*>::iterator esm_beg;
00366 std::multimap<Int_t,const CandDigitHandle*>::iterator esm_end;
00367 esm_beg = eventStripMatch.find(stpCounter);
00368 if(esm_beg != eventStripMatch.end()){
00369 esm_end = eventStripMatch.upper_bound(stpCounter);
00370 for ( ; esm_beg != esm_end; ++esm_beg) {
00371 if (is_muon) infoToStore[esm_beg->second] |= RmMuMask::kRMMU_ISMU_MASK;
00372 if (is_shower) infoToStore[esm_beg->second] |= RmMuMask::kRMMU_ISSHW_MASK;
00373 if (is_physics) infoToStore[esm_beg->second] |= RmMuMask::kRMMU_ISPHYS_MASK;
00374 }
00375 }
00376
00377 if(is_physics){
00378 if(is_shower){
00379 nShwDig++;
00380 peShw+=digit->GetCharge(CalDigitType::kPE);
00381 if(planeno<maxtrkplane){
00382 nShwDigAtVtx++;
00383 peShwAtVtx+=digit->GetCharge(CalDigitType::kPE);
00384 }
00385 if(is_retained || is_retained_scaled){
00386 nShwDigRetained++;
00387 peShwRetained+=digit->GetCharge(CalDigitType::kPE);
00388 if(planeno<maxtrkplane){
00389 nShwDigRetainedAtVtx++;
00390 peShwRetainedAtVtx+=digit->GetCharge(CalDigitType::kPE);
00391 }
00392 }
00393 else{
00394 nRejShw++;
00395 if(planeno>maxtrkplane) nRejShwMaxTrk++;
00396 if(is_muon) nRejShwMix++;
00397 if(!is_muon && is_track) nRejShwFakeTrk++;
00398 }
00399 } //is shower
00400 if(is_muon){
00401 nMuonDig++;
00402 if(is_retained || is_retained_scaled) nMuonDigRetained++;
00403 } //is muon
00404 if(is_retained || is_retained_scaled){
00405 nRetained++;
00406 peRetained+=digit->GetCharge(CalDigitType::kPE);
00407 if(is_muon){
00408 nRetainedMuon++;
00409 peRetainedMuon+=digit->GetCharge(CalDigitType::kPE);
00410 }
00411 if(is_shower){
00412 nRetainedShw++;
00413 peRetainedShw+=digit->GetCharge(CalDigitType::kPE);
00414 }
00415 if(is_muon && is_shower){
00416 nRetainedBoth++;
00417 peRetainedBoth+=digit->GetCharge(CalDigitType::kPE);
00418 }
00419 }
00420 else{
00421 nRejected++;
00422 if(is_muon && !is_shower)nRejectedMuon++;
00423 if(!is_muon && is_shower) nRejectedShw++;
00424 if(is_muon && is_shower) nRejectedBoth++;
00425 }
00426 }
00427 }
00428 stpCounter += 1;
00429 }
00430
00431 crmh.SetNMuonDig(nMuonDig);
00432 crmh.SetNMuonDigRetained(nMuonDigRetained);
00433 crmh.SetNShwDig(nShwDig);
00434 crmh.SetNShwDigRetained(nShwDigRetained);
00435 crmh.SetNShwDigAtVtx(nShwDigAtVtx);
00436 crmh.SetNShwDigRetainedAtVtx(nShwDigRetainedAtVtx);
00437 crmh.SetNShwPE(peShw);
00438 crmh.SetNShwPERetained(peShwRetained);
00439 crmh.SetNShwPEAtVtx(peShwAtVtx);
00440 crmh.SetNShwPERetainedAtVtx(peShwRetainedAtVtx);
00441 crmh.SetNRetained(nRetained);
00442 crmh.SetNRetainedMuon(nRetainedMuon);
00443 crmh.SetNRetainedShw(nRetainedShw);
00444 crmh.SetNRetainedBoth(nRetainedBoth);
00445 crmh.SetPERetained(peRetained);
00446 crmh.SetPERetainedMuon(peRetainedMuon);
00447 crmh.SetPERetainedShw(peRetainedShw);
00448 crmh.SetPERetainedBoth(peRetainedBoth);
00449 crmh.SetNRejected(nRejected);
00450 crmh.SetNRejectedMuon(nRejectedMuon);
00451 crmh.SetNRejectedShw(nRejectedShw);
00452 crmh.SetNRejectedBoth(nRejectedBoth);
00453 crmh.SetNRejShw(nRejShw);
00454 crmh.SetNRejShwMaxTrk(nRejShwMaxTrk);
00455 crmh.SetNRejShwFakeTrk(nRejShwFakeTrk);
00456 crmh.SetNRejShwMix(nRejShwMix);
00457 }
00458 delete helper;
00459 }
00460 delete truth;
00461 }
00462
00463 //set the reason for keeping thing:
00464 std::map<const CandDigitHandle*,Int_t>::iterator beg = infoToStore.begin();
00465 std::map<const CandDigitHandle*,Int_t>::iterator end = infoToStore.end();
00466 while(beg!=end){
00467 crmh.SetReasonForKeeping(beg->first,beg->second);
00468 beg++;
00469 }
00470
00471 }
|
|
|
Reimplemented from AlgBase. Definition at line 474 of file AlgRmMu.cxx. 00475 {
00476 }
|
1.3.9.1