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

MCText.cxx

Go to the documentation of this file.
00001 #include "MCText.h"
00002 #include <Midad/Gui/GuiTextView.h>
00003 #include <Midad/Base/Mint.h>
00004 #include <Midad/Base/Jint.h>
00005 
00006 #include <MinosObjectMap/MomNavigator.h>
00007 #include <Record/SimSnarlRecord.h>
00008 #include <Record/SimSnarlHeader.h>
00009 
00010 #include <REROOT_Classes/REROOT_NeuVtx.h>
00011 #include <REROOT_Classes/REROOT_NeuKin.h>
00012 
00013 #include <Validity/VldContext.h>
00014 #include <Validity/VldTimeStamp.h>
00015 
00016 #include <TParticle.h>
00017 #include <TClonesArray.h>
00018 
00019 #include <string>
00020 using namespace std;
00021 
00022 #include "pdg_kludge.h"
00023 
00024 
00025 
00026 MCText::MCText(GuiTextView* gtv)
00027     : fText(gtv)
00028 {
00029     const_cast<TGWindow*>(fText->GetParent())->Resize(750,250);
00030 
00031     pdg_kludge();
00032 }
00033 MCText::~MCText()
00034 {
00035     cerr << "MCText::~MCText()\n";
00036 }
00037 
00038 void MCText::Update(Mint* mint)
00039 {
00040     if (!fText) return;
00041     fText->Clear();
00042 
00043     if (!mint) {
00044         fText->AddLine("No Mint Object!");
00045         return;
00046     }
00047     const MomNavigator* mom = mint->GetJint().GetMom();
00048     if (!mom) {
00049         fText->AddLine("No MomNavigator Object!");
00050         return;
00051     }
00052 
00053     SimSnarlRecord* ssr = 
00054         dynamic_cast<SimSnarlRecord*>(mom->GetFragment("SimSnarlRecord"));
00055     if (!ssr) {
00056         fText->AddLine("No SimSnarlRecord!");
00057         fText->AddLine("Make sure either ReRootToTruthModule::Get is in your path");
00058         fText->AddLine("or the file has SimSnarls and SimSnarl streams are on");
00059         return;
00060     }
00061 
00062     this->AddSimSnarl(ssr);
00063 }
00064 
00065 void MCText::AddSimSnarl(SimSnarlRecord* ssr)
00066 {
00067     const SimSnarlHeader* ssh = ssr->GetSimSnarlHeader();
00068     if (!ssh) return;
00069 
00070     const REROOT_NeuKin* kin = 
00071         dynamic_cast<const REROOT_NeuKin*>
00072         (ssr->FindComponent("REROOT_NeuKin"));
00073     if (!kin) return;
00074 
00075     const TClonesArray* ctca = 
00076         dynamic_cast<const TClonesArray*>
00077         (ssr->FindComponent("TClonesArray","StdHep"));
00078     if (!ctca) return;
00079 
00080     fText->AddLine(ssh->GetVldContext().AsString());
00081     fText->AddLine(Form("Run=%d Sub=%d Snarl=%d",
00082                         ssh->GetRun(), ssh->GetSubRun(), ssh->GetSnarl()));
00083     string reaction;
00084     int ind, siz = ctca->GetEntriesFast();
00085     for (ind=0; ind < siz; ++ind) {
00086         TParticle* part = dynamic_cast<TParticle*>((*ctca)[ind]);
00087         if (!part) {
00088             cerr << "Non particle: " << (*ctca)[ind]->GetName() << endl;
00089             continue;
00090         }
00091         if (part->GetFirstMother() != -1) continue;
00092 
00093         if (ind == 1 || ind > 2) reaction += " + ";
00094         if (ind == 2) reaction += " --> ";
00095         reaction += part->GetName();
00096     }
00097     fText->AddLine(reaction.c_str());
00098 
00099     fText->AddLine(Form("kin: id=%d nu=%d targ=%d(A=%.1f,Z=%.1f)",
00100                         kin->ID(), kin->INu(), kin->ITg(), kin->A(), kin->Z()));
00101     fText->AddLine(Form("     boson=%d res=%d act=%d",
00102                         kin->IBoson(), kin->IResonance(), kin->IAction()));
00103     fText->AddLine(Form("     X=%8.6f Y=%8.6f EMFrac=%8.6f Q2=%8.6f W2=%8.6f",
00104                         kin->X(), kin->Y(), kin->EMFrac(), kin->Q2(), kin->W2()));
00105     fText->AddLine(Form("     Pnu=(%8.6f %8.6f %8.6f %8.6f), xsec=%8.6f",
00106                         kin->P4Neu()[0],kin->P4Neu()[1],kin->P4Neu()[2],kin->P4Neu()[3],
00107                         kin->Sigma()));
00108     fText->AddLine(Form("     Pshw=(%8.6f %8.6f %8.6f %8.6f)",
00109                         kin->P4Shw()[0],kin->P4Shw()[1],kin->P4Shw()[2],kin->P4Shw()[3]));
00110     fText->AddLine(Form("     Pmu1=(%8.6f %8.6f %8.6f %8.6f)",
00111                         kin->P4Mu1()[0],kin->P4Mu1()[1],kin->P4Mu1()[2],kin->P4Mu1()[3]));
00112     fText->AddLine(Form("     Pel1=(%8.6f %8.6f %8.6f %8.6f)",
00113                         kin->P4El1()[0],kin->P4El1()[1],kin->P4El1()[2],kin->P4El1()[3]));
00114 
00115 }

Generated on Sat Nov 7 01:26:22 2009 for loon by  doxygen 1.3.9.1