Filling 2D Energy Theta Histogram
Jump to navigation
Jump to search
#include <math.h> #include <TRandom3.h> void Reverse3_Moller() { struct evt_t { Int_t event; Float_t FnlMom[3], MolMom[3]; }; ifstream in; in.open("Just_Scattered_Momentum_4e8.dat"); evt_t evt; Int_t nlines=0; TLorentzVector Fnl_Lab_4Mom; TLorentzVector Mol_Lab_4Mom; TLorentzVector Fnl_CM_4Mom; TLorentzVector Mol_CM_4Mom; TLorentzVector CMS; TFile *f = new TFile("Reverse3_Moller_4e8.root","RECREATE"); TTree *tree = new TTree("Moller","Moller data from ascii file"); TH2F* MolEThetaCM=new TH2F("MolEThetaCM","Moller E and Theta CM",42,35,56,183,90,181); TH1F* FnlMomLab=new TH1F("FnlMomLab","Final Scattered Electron Momentum Lab Frame ",30000,0,15000); TH1F* MolMomLab=new TH1F("MolMomLab","Moller Momentum Lab Frame ", 12000,0,6000); TH1F* FnlMomCM=new TH1F("FnlMomCM","Final Scattered Electron Momentum CM Frame ",1000,40,60); TH1F* MolMomCM=new TH1F("MolMomCM","Moller Momentum CM Frame ",1000,40,60); TH1F* FnlThetaLab=new TH1F("FinalThetaLab","Final Scattered Electron Theta Lab Frame",200,0,1); TH1F* MolThetaLab=new TH1F("MolThetaLab","Moller Theta Lab Frame",2000,0,90); TH1F* FnlThetaCM=new TH1F("FnlThetaCM","Final Scattered Electron Theta CM Frame",360,0,90); TH1F* MolThetaCM=new TH1F("MolThetaCM","Moller Theta CM Frame",360,90,180); TH1F* FnlPhiCM=new TH1F("FnlPhiCM","Final Scattered Electron Phi in CM",720,-180,180); TH1F* MolPhiCM=new TH1F("MolPhiCM","Final Moller Phi in CM",720,-180,180); TH1F* FnlPhiLab=new TH1F("FnlPhiLab","Final Scattered Electron Phi in Lab",720,-180,180); TH1F* MolPhiLab=new TH1F("MolPhiLab","Final Moller Phi in Lab",720,-180,180); tree->Branch("evt",&evt.event,"event/I:FnlPx/F:FnlPy:FnlPz:MolPx:MolPy:MolPz"); while(in.good()) { evt.event=nlines; in >> evt.FnlMom[0] >> evt.FnlMom[1] >> evt.FnlMom[2] >> evt.MolMom[0] >> evt.MolMom[1] >> evt.MolMom[2]; nlines++; tree->Fill(); //Define using Final Moller momentum //Define 4 vector Mol_Lab_4Mom.SetPxPyPzE(evt.MolMom[0],evt.MolMom[1],evt.MolMom[2], sqrt(evt.MolMom[0]*evt.MolMom[0]+evt.MolMom[1]*evt.MolMom[1]+evt.MolMom[2]*evt.MolMom[2]+.511*.511)); //Find 4 Momentum vector componets for Final Lab frame scattered electron //Define 4vector Fnl_Lab_4Mom.SetPxPyPzE(evt.FnlMom[0],evt.FnlMom[1],evt.FnlMom[2], sqrt(evt.FnlMom[0]*evt.FnlMom[0]+evt.FnlMom[1]*evt.FnlMom[1]+evt.FnlMom[2]*evt.FnlMom[2]+.511*.511)); //Boost vectors CMS=Fnl_Lab_4Mom+Mol_Lab_4Mom; //Boost to CM Frame Fnl_Lab_4Mom.Boost(-CMS.BoostVector()); Fnl_CM_4Mom=Fnl_Lab_4Mom; Mol_Lab_4Mom.Boost(-CMS.BoostVector()); Mol_CM_4Mom=Mol_Lab_4Mom; //Recover the original Final 4-Momentums Fnl_Lab_4Mom.SetPxPyPzE(evt.FnlMom[0],evt.FnlMom[1],evt.FnlMom[2], sqrt(evt.FnlMom[0]*evt.FnlMom[0]+evt.FnlMom[1]*evt.FnlMom[1]+evt.FnlMom[2]*evt.FnlMom[2]+.511*.511)); Mol_Lab_4Mom.SetPxPyPzE(evt.MolMom[0],evt.MolMom[1],evt.MolMom[2], sqrt(evt.MolMom[0]*evt.MolMom[0]+evt.MolMom[1]*evt.MolMom[1]+evt.MolMom[2]*evt.MolMom[2]+.511*.511)); //Fill 2D Histogram with Moller Energy and Theta if(Mol_Lab_4Mom.E()>500) { MolEThetaCM->Fill(Mol_CM_4Mom.E(),(Mol_CM_4Mom.Theta()*180/3.14159265359)); MolThetaCM->Fill(Mol_CM_4Mom.Theta()*180/3.14159265359); FnlThetaCM->Fill(Fnl_CM_4Mom.Theta()*180/3.14159265359); MolThetaLab->Fill(Mol_Lab_4Mom.Theta()*180/3.14159265359); FnlThetaLab->Fill(Fnl_Lab_4Mom.Theta()*180/3.13159265359); FnlPhiLab->Fill(Fnl_Lab_4Mom.Phi()*180/3.14159265359); MolPhiLab->Fill(Mol_Lab_4Mom.Phi()*180/3.14159265359); MolMomLab->Fill(Mol_Lab_4Mom.P()); FnlMomLab->Fill(Fnl_Lab_4Mom.P()); MolMomCM->Fill(Mol_CM_4Mom.P()); FnlMomCM->Fill(Fnl_CM_4Mom.P()); FnlPhiCM->Fill(Fnl_CM_4Mom.Phi()*180/3.14159265359); MolPhiCM->Fill(Mol_CM_4Mom.Phi()*180/3.14159265359); } }//End input loop in.close(); tree->Print(); tree->Write(); f->Write(); delete tree; delete f; }//End main