Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

AlgRmMuList.cxx

Go to the documentation of this file.
00001 
00002 // $Id: AlgRmMuList.cxx,v 1.5 2009/12/08 23:04:08 rhatcher Exp $
00003 //
00004 // AlgRmMuList.cxx
00006 
00007 #include <cassert>
00008 
00009 #include "Algorithm/AlgFactory.h"
00010 #include "Algorithm/AlgHandle.h"
00011 #include "Algorithm/AlgConfig.h"
00012 #include "Candidate/CandContext.h"
00013 #include "MessageService/MsgService.h"
00014 #include "RecoBase/CandEventListHandle.h"
00015 #include "RecoBase/CandTrackListHandle.h"
00016 #include "RecoBase/CandEventHandle.h"
00017 #include "RecoBase/CandTrackHandle.h"
00018 #include "CandDigit/CandDigitListHandle.h"
00019 #include "MuonRemoval/AlgRmMuList.h"
00020 #include "MuonRemoval/CandRmMu.h"
00021 #include "MuonRemoval/CandRmMu.h"
00022 #include "MuonRemoval/CandRmMuHandle.h"
00023 #include "MuonRemoval/CandRmMuList.h"
00024 #include "MuonRemoval/CandRmMuListHandle.h"
00025 #include "MuonRemoval/SelectEvent.h"
00026 
00027 ClassImp(AlgRmMuList)
00028 
00029 //______________________________________________________________________
00030 CVSID("$Id: AlgRmMuList.cxx,v 1.5 2009/12/08 23:04:08 rhatcher Exp $");
00031 
00032 //______________________________________________________________________
00033 AlgRmMuList::AlgRmMuList()
00034 {
00035 }
00036 
00037 //______________________________________________________________________
00038 AlgRmMuList::~AlgRmMuList()
00039 {
00040 }
00041 
00042 //______________________________________________________________________
00043 void AlgRmMuList::RunAlg(AlgConfig &ac, CandHandle &ch,CandContext &cx)
00044 {
00045 
00046   MSG("AlgRmMu", Msg::kDebug) << "Starting AlgRmMuList::RunAlg()" << endl;
00047   assert(cx.GetDataIn());
00048   if (!(cx.GetDataIn()->InheritsFrom("TObjArray"))) {
00049     return;
00050   }
00051 
00052   Int_t cMaxTrackLikePlanes = 0;
00053   const char *charRmMuAlgConfig = 0;
00054   ac.Get("MaxTrackLikePlanes",cMaxTrackLikePlanes);
00055   ac.Get("RmMuAlgConfig",charRmMuAlgConfig);
00056 
00057   AlgFactory &af = AlgFactory::GetInstance();  
00058   AlgHandle ah = af.GetAlgHandle("AlgRmMu",charRmMuAlgConfig);
00059   AlgConfig& algconfig = ah.GetAlgConfig();
00060   algconfig.UnLockKeys();
00061   algconfig.UnLockValues();
00062   algconfig.Set("MaxTrackLikePlanes",cMaxTrackLikePlanes);
00063   algconfig.LockKeys();
00064   algconfig.LockValues();
00065   
00066   CandEventListHandle *eventlist = 0;
00067   CandTrackListHandle *tracklist = 0;
00068   CandDigitListHandle *digitlist = 0;
00069   const TObjArray *cxin = dynamic_cast<const TObjArray *>(cx.GetDataIn());
00070   for (Int_t i=0; i<=cxin->GetLast(); i++) {
00071     TObject *tobj = cxin->At(i);
00072     if(!tobj) continue;
00073     if(tobj->InheritsFrom("CandEventListHandle")){
00074       eventlist = dynamic_cast<CandEventListHandle*>(tobj);
00075       MSG("RlgRmMu", Msg::kDebug) << "Got EventList" << endl;
00076     }
00077     if(tobj->InheritsFrom("CandTrackListHandle")){
00078       tracklist = dynamic_cast<CandTrackListHandle*>(tobj);
00079       MSG("RlgRmMu", Msg::kDebug) << "Got TrackList" << endl;
00080     }
00081     if(tobj->InheritsFrom("CandDigitListHandle")){
00082       digitlist = dynamic_cast<CandDigitListHandle*>(tobj);
00083       MSG("RlgRmMu", Msg::kDebug) << "Got DigitList" << endl;
00084     }
00085   }
00086 
00087   if(eventlist==NULL || digitlist==NULL || tracklist==NULL) {
00088     MSG("AlgRmMu",Msg::kSynopsis) << " Bailing out of Event eventlist = " 
00089                                   << eventlist << " tracklist = " << tracklist 
00090                                   << " digitlist = " << digitlist <<endl; 
00091     return;
00092   }
00093 
00094   CandContext cxx(this,cx.GetMom());
00095   CandRecord *candrec = cx.GetCandRecord();
00096   assert(candrec);
00097   cxx.SetCandRecord(candrec);
00098 
00099   Int_t evtIndex = 0;
00100   CandEventHandleItr eventItr(eventlist->GetDaughterIterator());
00101   while( CandEventHandle *event = 
00102          dynamic_cast<const CandEventHandle*>(eventItr()) ){
00103     if(SelectEvent(event)){
00104       CandTrackHandle* track = GetRemovableTrack(event,tracklist);
00105       if(track){
00106         TObjArray rmmuarray;
00107         rmmuarray.Add(event);
00108         rmmuarray.Add(track);
00109         rmmuarray.Add(digitlist);
00110         cxx.SetDataIn(&rmmuarray);
00111         MSG("RmMu",Msg::kDebug) << "forming rumu candidate\n";
00112         CandRmMuHandle rmmuhandle = CandRmMu::MakeCandidate(ah,cxx);
00113         rmmuhandle.SetOrigEvtIndex(evtIndex);
00114         ch.AddDaughterLink(rmmuhandle);
00115       }
00116     }
00117     evtIndex+=1;
00118   }
00119 }
00120 
00121 //______________________________________________________________________
00122 void AlgRmMuList::Trace(const char * /* c */) const
00123 {
00124 }
00125 

Generated on Mon Feb 15 11:06:19 2010 for loon by  doxygen 1.3.9.1