47 fX =
MakeTH1(
'D',
"Position/Xfinal",
"Scatt sim x (nm)",1000,-1e7,1e+7);
48 fY =
MakeTH1(
'D',
"Position/Yfinal",
"Scatt sim y (nm)",1000,-1e7,1e+7);
49 fZ =
MakeTH1(
'D',
"Position/Zfinal",
"Scatt sim z (nm)",1000, 1., 1e+8);
51 fVX =
MakeTH1(
'D',
"Velocity/Vxfinal",
"Scatt sim vx (nm/ps)",10000, -5e+3,5e+3);
52 fVY =
MakeTH1(
'D',
"Velocity/Vyfinal",
"Scatt sim vy (nm/ps)",10000, -5e+3,5e+3);
53 fVZ =
MakeTH1(
'D',
"Velocity/Vzfinal",
"Scatt sim vz (nm/ps)",10000, 1.,3e+4);
54 fThetaX=
MakeTH1(
'D',
"Angle/thetax",
"Scatt sim x' (mrad)",10000, -5e+2,5e+2);
55 fThetaY=
MakeTH1(
'D',
"Angle/thetay",
"Scatt sim y' (mrad)",10000, -5e+2,5e+2);
56 fThetaR=
MakeTH1(
'D',
"Angle/thetaR",
"Scatt sim r' (mrad)",10000, 0,2e+3);
57 fNumScatt =
MakeTH1(
'D',
"Nscatt",
"Multiple scattering collisions",50000, 0, 50000.);
59 fXY =
MakeTH2(
'D',
"Position/X-Y",
"x versus y final",100,-1e7,1e+7,100,-1e+7,1e+7);
60 fVXVY =
MakeTH2(
'D',
"Velocity/Vx-Vy",
"vx versus vy final",1000,-5e+3,5e+3,1000,-5e+3,5e+3);
61 fXYCond =
MakeTH2(
'D',
"Position/X-Y-cond",
"x versus y final",1000,-1e+7,1e+7,1000,-1e+7,1e+7);
62 fVXVYCond =
MakeTH2(
'D',
"Velocity/Vx-Vy-cond",
"vx versus vy final",100,-1e+3,1e+3,100,-1e+3,1e+3);
64 fEmitX =
MakeTH2(
'D',
"X-X'",
"transverse emittance x",1000,-1e+7,1e+7,1000,-0.1,0.1);
65 fEmitY =
MakeTH2(
'D',
"Y-Y'",
"transverse emittance y",1000,-1e+7,1e+7,1000,-0.1,0.1);
66 fEmitDist =
MakeTH1(
'D',
"Emit4d",
"transverse emittance distribution",4000,0,2e+5);
75 Double_t cutpnts[3][2] = { {400, 800}, {700, 900}, {600, 1100} };
82 TCanvas *mycan =
new TCanvas(
"TestCanvas2",
"Does this work2?");
103 return cl->InheritsFrom(TYYYUnpackEvent::Class());
113 if (!inp || !poutevt) {
119 for (Int_t i = 0; i < 3; ++i) {
120 poutevt->fdR[i] = inp->fdData[i];
121 poutevt->fdV[i] = inp->fdData[i+3];
123 poutevt->
fdR[0]-=5e+6;
124 poutevt->fdR[1]-=5e+6;
125 poutevt->fiNumScatt = (Int_t) inp->fdData[6];
127 if(poutevt->fdV[2]) poutevt->fdGam[0]=poutevt->fdV[0]/poutevt->fdV[2];
128 if(poutevt->fdV[2]) poutevt->fdGam[1]=poutevt->fdV[1]/poutevt->fdV[2];
129 Double_t scalefact=1e-3;
130 poutevt->fdEmittX=poutevt->fdR[0]*poutevt->fdGam[0]*TMath::Pi()*scalefact;
131 poutevt->fdEmittY=poutevt->fdR[1]*poutevt->fdGam[1]*TMath::Pi()*scalefact;
132 poutevt->fdEmitt4d=poutevt->fdEmittX*poutevt->fdEmittY;
134 fX->Fill(poutevt->fdR[0]);
135 fY->Fill(poutevt->fdR[1]);
136 fZ->Fill(poutevt->fdR[2]);
137 fVX->Fill(poutevt->fdV[0]);
138 fVY->Fill(poutevt->fdV[1]);
139 fVZ->Fill(poutevt->fdV[2]);
142 fThetaX->Fill(poutevt->fdV[0]/poutevt->fdV[2] * 1000);
143 fThetaY->Fill(poutevt->fdV[1]/poutevt->fdV[2] * 1000);
144 fThetaR->Fill(TMath::Sqrt(poutevt->fdV[1]*poutevt->fdV[1] + poutevt->fdV[0]*poutevt->fdV[0])/poutevt->fdV[2] * 1000);
147 fXY->Fill(poutevt->fdR[0],poutevt->fdR[1]);
148 fVXVY->Fill(poutevt->fdV[0],poutevt->fdV[1]);
149 if(
fWinConR->Test(poutevt->fdR[0],poutevt->fdR[1]))
150 fXYCond->Fill(poutevt->fdR[0],poutevt->fdR[1]);
151 if(
fWinConV->Test(poutevt->fdV[0],poutevt->fdV[1]))
152 fVXVYCond->Fill(poutevt->fdV[0],poutevt->fdV[1]);
153 fEmitX->Fill(poutevt->fdR[0],poutevt->fdGam[0]);
154 fEmitY->Fill(poutevt->fdR[1],poutevt->fdGam[1]);
Bool_t AddCanvas(TCanvas *can, const char *subfolder=nullptr)
Register TCanvas to go4 framework.
TH1 * MakeTH1(char type, const char *fullname, const char *title, Int_t nbinsx, Double_t xlow, Double_t xup, const char *xtitle=nullptr, const char *ytitle=nullptr)
Create one dimensional histogram of specified type.
TGo4Parameter * GetParameter(const char *name, const char *par_class=nullptr)
Get parameter from go4 framework.
TH2 * MakeTH2(char type, const char *fullname, const char *title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, const char *xtitle=nullptr, const char *ytitle=nullptr, const char *ztitle=nullptr)
Create two dimensional histogram of specified type.
TGo4WinCond * MakeWinCond(const char *fullname, Double_t xmin, Double_t xmax, const char *HistoName=nullptr)
Create 1D window condition.
TCanvas * GetCanvas(const char *name)
Get TCanvas from go4 framework.
TGo4EventProcessor(const char *name)
Bool_t IsObjMade() const
Returns kTRUE if object in last Make... call was created, kFALSE when object was retrieved from autos...
TGo4EventElement * GetInputEvent()
Access to external raw event which is set as association member.
TGo4PolyCond * MakePolyCond(const char *fullname, Int_t npoints, Double_t(*points)[2], const char *HistoName=nullptr)
Create polygon condition.
friend class TGo4EventElement
static void Info(const char *text,...) GO4_PRINTF_ARGS
User shortcut for message with prio 1.
static void Error(const char *text,...) GO4_PRINTF_ARGS
User shortcut for message with prio 3.
Example for user defined raw event class.
Bool_t BuildEvent(TGo4EventElement *dest) override
Fill the destination event dest.
virtual ~TYYYUnpackProc()
TGo4PolyCond * fPolyConEmit
Bool_t CheckEventClass(TClass *cl) override
This method checks if event class is suited for the source.