100 {
101
103
104 TGraphAsymmErrors* g3= new TGraphAsymmErrors();
107
108 if (n1!=n2) {
109 printf(" vectors do not have same number of entries ! \n");
110 return g3;
111 }
112
113 Double_t
x1=0.,
y1=0.,
x2=0.,
y2=0.;
114 Double_t dx1h=0., dx1l=0.;
115 Double_t dy1h=0., dy1l=0.;
116 Double_t dy2h=0., dy2l=0.;
117
118 Double_t* X1 =
g1->GetX();
119 Double_t* Y1 =
g1->GetY();
120 Double_t* EXhigh1 =
g1->GetEXhigh();
121 Double_t* EXlow1 =
g1->GetEXlow();
122 Double_t* EYhigh1 =
g1->GetEYhigh();
123 Double_t* EYlow1 =
g1->GetEYlow();
124
125 Double_t* X2 =
g2->GetX();
126 Double_t* Y2 =
g2->GetY();
127 Double_t* EXhigh2 =
g2->GetEXhigh();
128 Double_t* EXlow2 =
g2->GetEXlow();
129 Double_t* EYhigh2 =
g2->GetEYhigh();
130 Double_t* EYlow2 =
g2->GetEYlow();
131
132 for (Int_t i=0;
i<
g1->GetN();
i++) {
133 g1->GetPoint(i,x1,y1);
134 g2->GetPoint(i,x2,y2);
137 if (y1!=0.) dy1h = EYhigh1[
i]/
y1;
138 else dy1h = 0.;
139 if (y2!=0.) dy2h = EYhigh2[
i]/
y2;
140 else dy2h = 0.;
141 if (y1!=0.) dy1l = EYlow1 [
i]/
y1;
142 else dy1l = 0.;
143 if (y2!=0.) dy2l = EYlow2 [
i]/
y2;
144 else dy2l = 0.;
145
146
147
149 printf("%d dy1=%f %f dy2=%f %f sqrt= %f %f \n",i,dy1l,dy1h,dy2l,dy2h,
150 sqrt(dy1l*dy1l+dy2l*dy2l),sqrt(dy1h*dy1h+dy2h*dy2h));
151
152 if (y2!=0.) g3->SetPoint(i, x1,y1/y2);
153 else g3->SetPoint(i, x1,y2);
154 Double_t
el=0.; Double_t eh=0.;
155
156 if (y1!=0. && y2!=0.)
el=sqrt(dy1l*dy1l+dy2l*dy2l)*(
y1/
y2);
157 if (y1!=0. && y2!=0.) eh=sqrt(dy1h*dy1h+dy2h*dy2h)*(
y1/
y2);
158
159 if (
debug) printf(
"dx1h=%f dx1l=%f el=%f eh=%f \n",dx1h,dx1l,el,eh);
160 g3->SetPointError(i,dx1h,dx1l,el,eh);
161
162 }
163 return g3;
164
165}