83 m_extTree =
new TTree(
"exthit",
"ext hit");
94 float thetaMin = 35.0;
95 float thetaMax = 130.0;
97 for (
int iL = 0; iL < 15 ; iL ++) {
99 sprintf(hname,
"denominator_Layer%i", iL + 1);
100 m_totalThephi[iL] =
new TH2F(hname, hname, phiBins, phiMin, phiMax, thetaBins, thetaMin, thetaMax);
103 sprintf(hname,
"numerator_Layer%i", iL + 1);
104 m_passThephi[iL] =
new TH2F(hname, hname, phiBins, phiMin, phiMax, thetaBins, thetaMin, thetaMax);
105 sprintf(hname,
"effi_Layer%i", iL + 1);
108 m_effiThephi[iL] =
new TH2F(hname, hname, phiBins, phiMin, phiMax, thetaBins, thetaMin, thetaMax);
112 sprintf(hname,
"Denominator_Layer%i", iL + 1);
113 m_totalTrkThephi[iL] =
new TH2F(hname, hname, phiBins, phiMin, phiMax, thetaBins, thetaMin, thetaMax);
116 sprintf(hname,
"Numerator_Layer%i", iL + 1);
117 m_passTrkThephi[iL] =
new TH2F(hname, hname, phiBins, phiMin, phiMax, thetaBins, thetaMin, thetaMax);
118 sprintf(hname,
"Effi_Layer%i", iL + 1);
121 m_effiTrkThephi[iL] =
new TH2F(hname, hname, phiBins, phiMin, phiMax, thetaBins, thetaMin, thetaMax);
132 m_hdistance =
new TH1F(
"m_hdistance",
" distance between matched extHit and bklmHit2d ", 100, 0, 30);
134 m_totalMom =
new TH1F(
"m_totalMom",
" denominator vs. p", mNbin, mommin, mommax);
135 m_passMom =
new TH1F(
"m_passMom",
" numerator vs. p", mNbin, mommin, mommax);
136 m_effiMom =
new TH1F(
"m_effiMom",
" effi. vs. p", mNbin, mommin, mommax);
137 m_effiMom->GetXaxis()->SetTitle(
"p (GeV)");
138 m_effiMom->GetYaxis()->SetTitle(
"Efficiency (GeV)");
140 m_totalYX =
new TH2F(
"m_totalYX",
" denominator Y vs. X", gNbin, gmin, gmax, gNbin, gmin, gmax);
141 m_passYX =
new TH2F(
"m_passYX",
" numerator Y vs. X", gNbin, gmin, gmax, gNbin, gmin, gmax);
142 m_totalYZ =
new TH2F(
"m_totalYZ",
" denominator Y vs. Z", gNbin, gmin, gmax, gNbin, gmin, gmax);
143 m_passYZ =
new TH2F(
"m_passYZ",
" numerator Y vs. Z", gNbin, gmin, gmax, gNbin, gmin, gmax);
144 m_effiYX =
new TH2F(
"m_effiYX",
" effi. Y vs. X", gNbin, gmin, gmax, gNbin, gmin, gmax);
145 m_effiYZ =
new TH2F(
"m_effiYZ",
" effi. Y vs. Z", gNbin, gmin, gmax, gNbin, gmin, gmax);
146 m_effiYX->GetXaxis()->SetTitle(
"x (cm)");
147 m_effiYX->GetYaxis()->SetTitle(
"y (cm)");
148 m_effiYZ->GetXaxis()->SetTitle(
"z (cm)");
149 m_effiYZ->GetYaxis()->SetTitle(
"y (cm)");
161 unsigned long runNumber = eventMetaData->getRun();
176 for (
int t = 0; t <
extHits.getEntries(); t++) {
191 for (
int k = 0; k <
tracks.getEntries(); k++) {
199 double trkphi = p3.Phi() * TMath::RadToDeg();
200 double trktheta = p3.Theta() * TMath::RadToDeg();
202 trkphi = trkphi + 360.0;
205 for (
unsigned int t = 0; t < relatedExtHit.size(); t++) {
206 ExtHit* exthit = relatedExtHit[t];
213 bool crossed =
false;
217 int extPattern = muid->getExtLayerPattern();
218 if ((extPattern & (1 << (layer - 1))) != 0)
223 ROOT::Math::XYZVector extVec = exthit->
getPosition();
224 bool matched =
false;
227 float phi = extVec.Phi() * TMath::RadToDeg();
228 float theta = extVec.Theta() * TMath::RadToDeg();
237 for (
int mHit = 0; mHit <
hits2D.getEntries(); mHit++) {
242 if (hit->getSection() != section)
244 if (hit->getSector() != sector)
246 if (hit->getLayer() != layer)
248 ROOT::Math::XYZVector position = hit->getPosition();
249 ROOT::Math::XYZVector distance = extVec - position;
253 if (distance.R() < 20)
260 m_passYX->Fill(extVec.X(), extVec.Y());
261 m_passYZ->Fill(extVec.Z(), extVec.Y());
277 for (
int iL = 0; iL < 15; iL ++) {
280 float num =
m_passThephi[iL]->GetBinContent(i + 1, j + 1);
281 float denom =
m_totalThephi[iL]->GetBinContent(i + 1, j + 1);
283 m_effiThephi[iL]->SetBinContent(i + 1, j + 1, num / denom);
284 m_effiThephi[iL]->SetBinError(i + 1, j + 1,
sqrt(num * (denom - num) / (denom * denom * denom)));
293 for (
int iL = 0; iL < 15; iL ++) {
300 m_effiTrkThephi[iL]->SetBinError(i + 1, j + 1,
sqrt(num * (denom - num) / (denom * denom * denom)));
310 for (
int i = 0; i <
m_totalYX->GetNbinsX(); i++) {
311 for (
int j = 0; j <
m_totalYX->GetNbinsY(); j++) {
312 float num =
m_passYX->GetBinContent(i + 1, j + 1);
313 float denom =
m_totalYX->GetBinContent(i + 1, j + 1);
315 m_effiYX->SetBinContent(i + 1, j + 1, num / denom);
316 m_effiYX->SetBinError(i + 1, j + 1,
sqrt(num * (denom - num) / (denom * denom * denom)));
318 m_effiYX->SetBinContent(i + 1, j + 1, 0);
319 m_effiYX->SetBinError(i + 1, j + 1, 0);
322 num =
m_passYZ->GetBinContent(i + 1, j + 1);
323 denom =
m_totalYZ->GetBinContent(i + 1, j + 1);
325 m_effiYZ->SetBinContent(i + 1, j + 1, num / denom);
326 m_effiYZ->SetBinError(i + 1, j + 1,
sqrt(num * (denom - num) / (denom * denom * denom)));
328 m_effiYZ->SetBinContent(i + 1, j + 1, 0);
329 m_effiYZ->SetBinError(i + 1, j + 1, 0);
334 for (
int i = 0; i <
m_totalMom->GetNbinsX(); i++) {
335 float num =
m_passMom->GetBinContent(i + 1);
336 float denom =
m_totalMom->GetBinContent(i + 1);
338 m_effiMom->SetBinContent(i + 1, num / denom);
339 m_effiMom->SetBinError(i + 1,
sqrt(num * (denom - num) / (denom * denom * denom)));
357 for (
int i = 0; i < 15; i++) {