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

ANtpRecoNtpManipulator.cxx

Go to the documentation of this file.
00001 
00002 //$Id: ANtpRecoNtpManipulator.cxx,v 1.16 2009/06/10 17:09:04 brebel Exp $
00003 //
00004 //ANtpRecoNtpManipulator.cxx
00005 //
00006 //B. Rebel 10/2004
00008 
00009 #include "AnalysisNtuples/Module/ANtpRecoNtpManipulator.h"
00010 #include "AnalysisNtuples/ANtpDefaultValue.h"
00011 #include "MessageService/MsgService.h"
00012 #include "MCNtuple/NtpMCTruth.h"
00013 #include "MCNtuple/NtpMCStdHep.h"
00014 #include "TruthHelperNtuple/NtpTHEvent.h"
00015 #include "TruthHelperNtuple/NtpTHTrack.h"
00016 #include "TruthHelperNtuple/NtpTHShower.h"
00017 #include "TruthHelperNtuple/NtpTHStrip.h"
00018 #include "Validity/VldContext.h"
00019 #include "Conventions/ReleaseType.h"
00020 
00021 #include <cassert>
00022 #include <algorithm>
00023 #include <string>
00024 
00025 using std::string;
00026 
00027 ClassImp(ANtpRecoNtpManipulator)
00028 
00029 CVSID("$Id: ANtpRecoNtpManipulator.cxx,v 1.16 2009/06/10 17:09:04 brebel Exp $");
00030 
00031 //-------------------------------------------------------------------
00032 ANtpRecoNtpManipulator::ANtpRecoNtpManipulator() :
00033   fEventManipulator(0),
00034   fSnarlManipulator(0),
00035   fSliceManipulator(0),
00036   fMCManipulator(0),
00037   fNtpMCRecord(0),
00038   fNtpSRRecord(0),
00039   fNtpSRShieldStrip(0),
00040   fNtpTHRecord(0)
00041 {
00042   fEventManipulator = new ANtpEventManipulator();
00043   fSnarlManipulator = new ANtpSnarlManipulator();
00044   fSliceManipulator = new ANtpSliceManipulator();
00045   fMCManipulator = new ANtpMCManipulator();
00046     
00047   MSG("ANtpRecoNtpManipulator", Msg::kDebug) << "ANtpRecoNtpManipulator::Constructor" << endl;
00048   
00049 }
00050 
00051 //-------------------------------------------------------------------
00052 ANtpRecoNtpManipulator::ANtpRecoNtpManipulator(NtpSRRecord *record, 
00053                                                NtpMCRecord *mcRecord, 
00054                                                NtpTHRecord *thRecord) :
00055   fEventManipulator(0),
00056   fSnarlManipulator(0),
00057   fSliceManipulator(0),
00058   fMCManipulator(0),
00059   fNtpMCRecord(mcRecord),
00060   fNtpSRRecord(record),
00061   fNtpSRCosmicRay(record->crhdr),
00062   fNtpSRDmxStatus(record->dmxstatus),
00063   fNtpSREventSummary(record->evthdr),
00064   fNtpSRShieldStrip(0),
00065   fNtpSRShieldSummary(record->vetohdr),
00066   fNtpTHRecord(thRecord),
00067   fNtpStRecord(0),
00068   fEventArray(record->evt),
00069   fTrackArray(record->trk),
00070   fShowerArray(record->shw),
00071   fStripArray(record->stp),
00072   fVetoStripArray(record->vetostp),
00073   fSliceArray(record->slc),
00074   fMCArray(0),
00075   fStdArray(0),
00076   fTHShwArray(0),
00077   fTHTrkArray(0),
00078   fTHStpArray(0),
00079   fTHEvtArray(0)
00080 {
00081   if(fNtpSRRecord){
00082     //get a RecCandHeader to access the run and snarl info
00083     const RecCandHeader &header = record->GetHeader();
00084     
00085     fRun = header.GetRun();
00086     fSubRun = header.GetSubRun();
00087     fSnarl = header.GetSnarl();
00088     fTriggerSource = header.GetTrigSrc();
00089     fSpillType = header.GetRemoteSpillType();
00090   }
00091   
00092   if(fNtpMCRecord){
00093     fMCArray = mcRecord->mc;
00094     fStdArray = mcRecord->stdhep;
00095   }
00096   if(fNtpTHRecord){
00097     fTHShwArray = thRecord->thshw;
00098     fTHStpArray = thRecord->thstp;
00099     fTHTrkArray = thRecord->thtrk;
00100     fTHEvtArray = thRecord->thevt;
00101   }
00102 
00103   fEventManipulator = new ANtpEventManipulator();
00104   fSnarlManipulator = new ANtpSnarlManipulator();
00105   fSliceManipulator = new ANtpSliceManipulator();
00106   fMCManipulator = new ANtpMCManipulator();
00107 
00108   fEventManipulator->Initialize(fEventArray, fTrackArray, fShowerArray, fStripArray);
00109   fSnarlManipulator->Initialize(fEventArray, fTrackArray, fShowerArray, fStripArray);
00110   fSliceManipulator->Initialize(fSliceArray, fStripArray);
00111   fMCManipulator->Initialize(fMCArray, fStdArray, fTHEvtArray, fTHTrkArray, fTHShwArray, 
00112                              fTHStpArray);
00113 
00114   MSG("ANtpRecoNtpManipulator", Msg::kDebug) << "ANtpRecoNtpManipulator::Constructor" << endl;    
00115 }
00116 
00117 //-------------------------------------------------------------------
00118 ANtpRecoNtpManipulator::ANtpRecoNtpManipulator(NtpStRecord *record) :
00119   fEventManipulator(0),
00120   fSnarlManipulator(0),
00121   fSliceManipulator(0),
00122   fMCManipulator(0),
00123   fNtpMCRecord(0),
00124   fNtpSRRecord(0),
00125   fNtpSRCosmicRay(record->crhdr),
00126   fNtpSRDmxStatus(record->dmxstatus),
00127   fNtpSRDataQuality(record->dataquality),
00128   fNtpSREventSummary(record->evthdr),
00129   fNtpSRShieldStrip(0),
00130   fNtpSRShieldSummary(record->vetohdr),
00131   fNtpTHRecord(0),
00132   fNtpStRecord(record),
00133   fEventArray(record->evt),
00134   fTrackArray(record->trk),
00135   fShowerArray(record->shw),
00136   fClusterArray(record->clu),
00137   fStripArray(record->stp),
00138   fVetoStripArray(record->vetostp),
00139   fSliceArray(record->slc),
00140   fMCArray(record->mc),
00141   fStdArray(record->stdhep),
00142   fTHShwArray(record->thshw),
00143   fTHTrkArray(record->thtrk),
00144   fTHStpArray(record->thstp),
00145   fTHEvtArray(record->thevt)  
00146 {
00147     if(fNtpStRecord){
00148         //get a RecCandHeader to access the run and snarl info
00149         const RecCandHeader &header = record->GetHeader();
00150         
00151         fRun = header.GetRun();
00152         fSubRun = header.GetSubRun();
00153         fSnarl = header.GetSnarl();
00154         fTriggerSource = header.GetTrigSrc();
00155         fSpillType = header.GetRemoteSpillType();
00156         
00157         string relName = record->GetTitle();
00158         string mcinfo = "";
00159         if(record->GetVldContext()->GetSimFlag() == SimFlag::kMC){
00160           mcinfo = "Daikon";
00161           string temp = record->mchdr.geninfo.codename;
00162           if(temp.size() != 0)   mcinfo = temp;
00163         }
00164         ReleaseType::Release_t release = record->GetRelease();
00165         //Determine Reco Release type member
00166         string relMCName = ReleaseType::AsString(release);
00167         fReleaseMCType = relMCName.c_str();
00168         
00169     }//if(fNtpStRecord)
00170     
00171     
00172     fEventManipulator = new ANtpEventManipulator();
00173     fSnarlManipulator = new ANtpSnarlManipulator();
00174     fSliceManipulator = new ANtpSliceManipulator();
00175     fMCManipulator = new ANtpMCManipulator();
00176     
00177     fEventManipulator->Initialize(fEventArray, 
00178                                   fTrackArray, 
00179                                   fShowerArray, 
00180                                   fStripArray);
00181     fSnarlManipulator->Initialize(fEventArray, 
00182                                   fTrackArray, 
00183                                   fShowerArray, 
00184                                   fStripArray);
00185     fSliceManipulator->Initialize(fSliceArray, 
00186                                   fStripArray);
00187     fMCManipulator->Initialize(fMCArray, 
00188                                fStdArray, 
00189                                fTHEvtArray, 
00190                                fTHTrkArray, 
00191                                fTHShwArray, 
00192                                fTHStpArray);
00193     
00194     MSG("ANtpRecoNtpManipulator", Msg::kDebug) << "ANtpRecoNtpManipulator::Constructor" << endl;    
00195 }
00196 
00197 //----------------------------------------------------------------------
00198 ANtpRecoNtpManipulator::~ANtpRecoNtpManipulator()
00199 {
00200   if(fEventManipulator) delete fEventManipulator;
00201   if(fSnarlManipulator) delete fSnarlManipulator;
00202   if(fSliceManipulator) delete fSliceManipulator;
00203   if(fMCManipulator) delete fMCManipulator;
00204 
00205   MSG("ANtpRecoNtpManipulator", Msg::kDebug) << "ANtpRecoNtpManipulator::Destructor" << endl;
00206   
00207 }
00208 
00209 //-----------------------------------------------------------------------
00210 ANtpEventManipulator *ANtpRecoNtpManipulator::GetEventManipulator() const
00211 {
00212   return fEventManipulator;
00213 }
00214 
00215 //-----------------------------------------------------------------------
00216 ANtpSnarlManipulator *ANtpRecoNtpManipulator::GetSnarlManipulator() const
00217 {
00218   return fSnarlManipulator;
00219 }
00220 
00221 //-----------------------------------------------------------------------
00222 ANtpSliceManipulator *ANtpRecoNtpManipulator::GetSliceManipulator() const
00223 {
00224   return fSliceManipulator;
00225 }
00226 
00227 //-----------------------------------------------------------------------
00228 ANtpMCManipulator *ANtpRecoNtpManipulator::GetMCManipulator() const
00229 {
00230   return fMCManipulator;
00231 }
00232 
00233 //-----------------------------------------------------------------------
00234 NtpSREventSummary ANtpRecoNtpManipulator::GetSnarlEventSummary() const
00235 {
00236   return fNtpSREventSummary;  
00237 }
00238 
00239 //------------------------------------------------------------------------
00240 NtpSRShieldStrip *ANtpRecoNtpManipulator::GetShieldStrip(Int_t index)
00241 {
00242   fNtpSRShieldStrip = 0;
00243 
00244   fNtpSRShieldStrip = dynamic_cast<NtpSRShieldStrip *>(fVetoStripArray->At(index));
00245   
00246   return fNtpSRShieldStrip;
00247 }
00248 
00249 //------------------------------------------------------------------------
00250 NtpSRShieldSummary ANtpRecoNtpManipulator::GetSnarlShieldSummary() const
00251 {
00252   return fNtpSRShieldSummary;
00253 }
00254 
00255 //------------------------------------------------------------------------
00256 NtpSRCosmicRay ANtpRecoNtpManipulator::GetCosmicRayInfo() const 
00257 {
00258   return fNtpSRCosmicRay;
00259 }
00260 
00261 //------------------------------------------------------------------------
00262 NtpSRDmxStatus ANtpRecoNtpManipulator::GetDmxStatusInfo() const 
00263 {
00264   return fNtpSRDmxStatus;
00265 }
00266 
00267 //------------------------------------------------------------------------
00268 NtpSRDataQuality ANtpRecoNtpManipulator::GetDataQuality() const 
00269 {
00270   return fNtpSRDataQuality;
00271 }
00272 
00273 //------------------------------------------------------------------------
00274 Int_t ANtpRecoNtpManipulator::GetRun() const
00275 {
00276   return fRun;
00277 }
00278 
00279 //------------------------------------------------------------------------
00280 Int_t ANtpRecoNtpManipulator::GetSubRun() const
00281 {
00282   return fSubRun;
00283 }
00284 
00285 //------------------------------------------------------------------------
00286 Int_t ANtpRecoNtpManipulator::GetSnarl() const
00287 {
00288   return fSnarl;
00289 }
00290 
00291 //------------------------------------------------------------------------
00292 Int_t ANtpRecoNtpManipulator::GetTriggerSource() const
00293 {
00294   return fTriggerSource;
00295 }
00296 
00297 //-----------------------------------------------------------------------
00298 Int_t ANtpRecoNtpManipulator::GetSpillType() const
00299 {
00300   return fSpillType;
00301 }
00302 
00303 //-----------------------------------------------------------------------
00304 TString ANtpRecoNtpManipulator::GetReleaseType() const
00305 {
00306   return fReleaseType;
00307 }
00308 
00309 //-----------------------------------------------------------------------
00310 TString ANtpRecoNtpManipulator::GetMCType() const
00311 {
00312   return fMCType;
00313 }
00314 
00315 //-----------------------------------------------------------------------
00316 TString ANtpRecoNtpManipulator::GetReleaseMCType() const
00317 {
00318   return fReleaseMCType;
00319 }
00320 
00321 //------------------------------------------------------------------------
00322 NtpStRecord *ANtpRecoNtpManipulator::GetNtpStRecord() const
00323 {
00324   return fNtpStRecord;
00325 }
00326 
00327 //------------------------------------------------------------------------
00328 TClonesArray *ANtpRecoNtpManipulator::GetStripArray() const
00329 {
00330   return fStripArray;
00331 }
00332 
00333 //------------------------------------------------------------------------
00334 TClonesArray *ANtpRecoNtpManipulator::GetVetoStripArray() const 
00335 {
00336   return fVetoStripArray;
00337 }
00338 
00339 //------------------------------------------------------------------------
00340 TClonesArray *ANtpRecoNtpManipulator::GetEventArray() const 
00341 {
00342   return fEventArray;
00343 }
00344 
00345 //------------------------------------------------------------------------
00346 TClonesArray *ANtpRecoNtpManipulator::GetShowerArray() const 
00347 {
00348   return fShowerArray;
00349 }
00350 
00351 //------------------------------------------------------------------------
00352 TClonesArray *ANtpRecoNtpManipulator::GetClusterArray() const 
00353 {
00354   return fClusterArray;
00355 }
00356 
00357 //------------------------------------------------------------------------
00358 TClonesArray *ANtpRecoNtpManipulator::GetTrackArray() const
00359 {
00360   return fTrackArray;
00361 }
00362 
00363 //------------------------------------------------------------------------
00364 TClonesArray *ANtpRecoNtpManipulator::GetSliceArray() const
00365 {
00366   return fSliceArray;
00367 }
00368 
00369 //------------------------------------------------------------------------
00370 TClonesArray *ANtpRecoNtpManipulator::GetStdHepArray() const
00371 {
00372   return fStdArray;
00373 }
00374 
00375 //------------------------------------------------------------------------
00376 TClonesArray *ANtpRecoNtpManipulator::GetMCArray() const
00377 {
00378   return fMCArray;
00379 }
00380 
00381 //------------------------------------------------------------------------
00382 TClonesArray *ANtpRecoNtpManipulator::GetTHStpArray() const
00383 {
00384   return fTHStpArray;
00385 }
00386 
00387 //------------------------------------------------------------------------
00388 TClonesArray *ANtpRecoNtpManipulator::GetTHShwArray() const
00389 {
00390   return fTHShwArray;
00391 }
00392 
00393 //------------------------------------------------------------------------
00394 TClonesArray *ANtpRecoNtpManipulator::GetTHEvtArray() const
00395 {
00396   return fTHEvtArray;
00397 }
00398 
00399 //------------------------------------------------------------------------
00400 TClonesArray *ANtpRecoNtpManipulator::GetTHTrkArray() const
00401 {
00402   return fTHTrkArray;
00403 }
00404 
00405 //--------------------------------------------------------------------------
00406 void ANtpRecoNtpManipulator::SetPrimaryTrackCriteria(Int_t useNPlanes, Int_t useLength,
00407                                                      Int_t usePH)
00408 {
00409   fEventManipulator->SetPrimaryTrackCriteria(useNPlanes, useLength, usePH);
00410   fSnarlManipulator->SetPrimaryTrackCriteria(useNPlanes, useLength, usePH);
00411 
00412   return;
00413 }
00414 
00415 //--------------------------------------------------------------------------
00416 void ANtpRecoNtpManipulator::SetPrimaryShowerCriteria(Int_t useNPlanes, Int_t usePH)
00417 {
00418   fEventManipulator->SetPrimaryShowerCriteria(useNPlanes, usePH);
00419   fSnarlManipulator->SetPrimaryShowerCriteria(useNPlanes, usePH);
00420 
00421   return;
00422 }
00423 
00424 //--------------------------------------------------------------------------
00425 void ANtpRecoNtpManipulator::SetRecord(NtpSRRecord *record, NtpMCRecord *mcRecord, 
00426                                        NtpTHRecord *thRecord)
00427 {
00428 
00429   fNtpMCRecord = mcRecord;
00430   fNtpSRRecord = record;
00431   fNtpSRCosmicRay = record->crhdr;
00432   fNtpSRDmxStatus = record->dmxstatus;
00433   fNtpSREventSummary = record->evthdr;
00434   fNtpSRShieldStrip = 0;
00435   fNtpSRShieldSummary = record->vetohdr;
00436   fNtpTHRecord = thRecord;
00437   fNtpStRecord = 0;
00438   fEventArray = record->evt;
00439   fTrackArray = record->trk;
00440   fShowerArray = record->shw;
00441   fClusterArray = record->clu;
00442   fStripArray = record->stp;
00443   fVetoStripArray = record->vetostp;
00444   fSliceArray = record->slc;
00445   fMCArray = 0;
00446   fStdArray = 0;
00447   fTHShwArray = 0;
00448   fTHStpArray = 0;
00449   fTHTrkArray = 0;
00450   fTHEvtArray = 0;
00451   
00452   if(fNtpMCRecord){
00453     fMCArray = mcRecord->mc;
00454     fStdArray = mcRecord->stdhep;
00455   }
00456   if(fNtpTHRecord){
00457     fTHShwArray = thRecord->thshw;
00458     fTHStpArray = thRecord->thstp;
00459     fTHTrkArray = thRecord->thtrk;
00460     fTHEvtArray = thRecord->thevt;
00461   }
00462 
00463   fEventManipulator->Initialize(fEventArray, fTrackArray, fShowerArray, fStripArray);
00464   fSnarlManipulator->Initialize(fEventArray, fTrackArray, fShowerArray, fStripArray);
00465   fSliceManipulator->Initialize(fSliceArray, fStripArray);
00466   fMCManipulator->Initialize(fMCArray, fStdArray, fTHShwArray, fTHStpArray, fTHEvtArray, 
00467                              fTHTrkArray);
00468 
00469   return;
00470 }
00471 
00472 //--------------------------------------------------------------------------
00473 void ANtpRecoNtpManipulator::SetRecord(NtpStRecord *record)
00474 {
00475   fNtpMCRecord = 0;
00476   fNtpSRRecord = 0;
00477   fNtpSRCosmicRay = record->crhdr;
00478   fNtpSRDmxStatus = record->dmxstatus;
00479   fNtpSREventSummary = record->evthdr;
00480   fNtpSRShieldStrip = 0;
00481   fNtpSRShieldSummary = record->vetohdr;
00482   fNtpTHRecord = 0;
00483   fNtpStRecord = record;
00484   fEventArray = record->evt;
00485   fTrackArray = record->trk;
00486   fShowerArray = record->shw;
00487   fClusterArray = record->clu;
00488   fStripArray = record->stp;
00489   fVetoStripArray = record->vetostp;
00490   fSliceArray = record->slc;
00491   fMCArray = record->mc;
00492   fStdArray = record->stdhep;
00493   fTHShwArray = record->thshw;
00494   fTHTrkArray = record->thtrk;
00495   fTHStpArray = record->thstp;
00496   fTHEvtArray = record->thevt;
00497 
00498   fEventManipulator->Initialize(fEventArray, fTrackArray, fShowerArray, fStripArray);
00499   fSnarlManipulator->Initialize(fEventArray, fTrackArray, fShowerArray, fStripArray);
00500   fSliceManipulator->Initialize(fSliceArray, fStripArray);
00501   fMCManipulator->Initialize(fMCArray, fStdArray, fTHShwArray, fTHStpArray, fTHEvtArray, 
00502                              fTHTrkArray);
00503 
00504   return;
00505 }

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