2 #include "AliFMDDndeta.h"
6 #include "AliFMDAnaParameters.h"
7 #include "AliFMDAnaCalibSharingEfficiency.h"
9 //#include "TObjArray.h"
17 ClassImp(AliFMDDndeta)
18 //_____________________________________________________________________
20 AliFMDDndeta::AliFMDDndeta()
32 //_____________________________________________________________________
33 void AliFMDDndeta::SetNames(Analysis what) {
37 fPrimEvents.Form("nMCEventsNoCuts"); //was nMCEvents
38 fEvents.Form("nEvents");
39 fPrimdNdeta.Form("hMultvsEtaNoCuts");
42 fPrimEvents.Form("nMCEvents");
43 fEvents.Form("nEvents");
44 fPrimdNdeta.Form("hMultvsEtaNoCuts");
47 fPrimEvents.Form("nMCEventsNoCuts");
48 fEvents.Form("nEvents");
49 fPrimdNdeta.Form("hMultvsEtaNoCuts");
52 fPrimEvents.Form("nMCEvents");
53 fEvents.Form("nEvents");
54 fPrimdNdeta.Form("hMultvsEta");
60 //_____________________________________________________________________
61 const char* AliFMDDndeta::GetAnalysisName(Analysis what, UShort_t det, Char_t ring, Int_t vtxbin) {
67 name = Form("hits_NoCuts_FMD%d%c_vtxbin%d_proj",det,ring,vtxbin); //NoCuts added
70 name = Form("hits_FMD%d%c_vtxbin%d_proj",det,ring,vtxbin);
73 name = Form("dNdeta_FMD%d%c_vtxbin%d_proj",det,ring,vtxbin);
76 name = Form("dNdeta_FMD%d%c_TrVtx_vtxbin%d_proj",det,ring,vtxbin);
81 //std::cout<<name.Data()<<std::endl;
84 //_____________________________________________________________________
85 const char* AliFMDDndeta::GetPrimName(Analysis what, UShort_t det, Char_t ring, Int_t vtxbin) {
91 name = Form("hMCHits_nocuts_FMD%d%c_vtxbin%d",det,ring,vtxbin); //nocuts added
94 name = Form("hMCHits_FMD%d%c_vtxbin%d",det,ring,vtxbin);
97 name = Form("primmult_vtxbin%d",vtxbin);
100 name = Form("primmult_NoCuts_vtxbin%d",vtxbin);
107 //_____________________________________________________________________
108 void AliFMDDndeta::GenerateHits() {
110 AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance();
111 TH2F* hTmp = pars->GetBackgroundCorrection(1,'I',0);
112 Int_t nVertexBins = pars->GetNvtxBins();
113 Int_t nEtaBins = hTmp->GetNbinsX();
114 Float_t etaMin = hTmp->GetXaxis()->GetXmin();
115 Float_t etaMax = hTmp->GetXaxis()->GetXmax();
117 for(Int_t i = 0; i<nVertexBins;i++) {
118 TH1F* hHits = new TH1F(Form("hMCHits_vtxbin%d",i),Form("hHits_vtxbin%d",i),nEtaBins,etaMin,etaMax);
120 fMultList.Add(hHits);
123 for(Int_t det = 1; det<=3; det++) {
124 Int_t maxRing = (det == 1 ? 0 : 1);
125 for(Int_t ring = 0;ring<=maxRing;ring++) {
127 Char_t ringChar = (ring == 0 ? 'I' : 'O');
128 for(Int_t v=0; v< nVertexBins; v++) {
129 TH1F* hits = (TH1F*)fList->FindObject(GetPrimName(kHits,det,ringChar,v));
131 Int_t nNonZero = 0, nNonZeroInData = 0;
134 for(Int_t i =1;i<=hits->GetNbinsX();i++) {
135 if(hits->GetBinContent(i) !=0)
139 TH1F* sumMultHist = (TH1F*)fMultList.FindObject(Form("hMCHits_vtxbin%d",v));
140 for(Int_t i =1;i<=sumMultHist->GetNbinsX();i++) {
141 if(hits->GetBinContent(i) == 0 ) continue;
145 if(nNonZeroInData <=fNbinsToCut || nNonZeroInData > (nNonZero - fNbinsToCut)) {
148 if(sumMultHist->GetBinContent(i) == 0 && hits->GetBinContent(i) != 0){
149 sumMultHist->SetBinContent(i,hits->GetBinContent(i));
150 sumMultHist->SetBinError(i,hits->GetBinError(i));
155 Float_t sumofw = (1/TMath::Power(hits->GetBinError(i),2)) + (1/TMath::Power(sumMultHist->GetBinError(i),2));
156 Float_t wav = (hits->GetBinContent(i)*(1/TMath::Power(hits->GetBinError(i),2)) + sumMultHist->GetBinContent(i)*(1/TMath::Power(sumMultHist->GetBinError(i),2)))/sumofw;
157 Float_t error = 1/TMath::Sqrt(sumofw);
158 sumMultHist->SetBinContent(i, wav);
159 sumMultHist->SetBinError(i, error);
167 //_____________________________________________________________________
168 void AliFMDDndeta::Init(const Char_t* filename) {
170 TFile* fin = TFile::Open(filename);
173 AliWarning("No file - aborting !");
176 fList = (TList*)fin->Get("BackgroundCorrected");
177 AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance();
180 fIsGenerated[kHits] = kFALSE;
181 fIsGenerated[kMult] = kFALSE;
182 fIsGenerated[kMultTrVtx] = kFALSE;
186 //_____________________________________________________________________
187 void AliFMDDndeta::GenerateMult(Analysis what) {
191 AliWarning("Not initialised - call Init to remedy");
195 if(fIsGenerated[what]) {
196 AliWarning("Already generated - have a look at the results!");
199 else fIsGenerated[what] = kTRUE;
206 TH1I* hMCEvents = (TH1I*)fList->FindObject(fPrimEvents.Data());
208 AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance();
210 TH2F* hTmp = pars->GetBackgroundCorrection(1,'I',0);
211 Int_t nVertexBins = pars->GetNvtxBins();
212 Int_t nEtaBins = hTmp->GetNbinsX();
213 Float_t etaMin = hTmp->GetXaxis()->GetXmin();
214 Float_t etaMax = hTmp->GetXaxis()->GetXmax();
216 for(Int_t i = 0; i<nVertexBins;i++) {
217 TH1F* hMult = new TH1F(Form("hMult_vtxbin%d",i),Form("hMult_vtxbin%d",i),nEtaBins,etaMin,etaMax);
219 fMultList.Add(hMult);
222 for(Int_t det = 1; det<=3;det++) {
223 Int_t maxRing = (det == 1 ? 0 : 1);
224 for(Int_t iring = 0; iring<=maxRing; iring++) {
225 Char_t ringChar = (iring == 0 ? 'I' : 'O');
226 TH1F* hRingMult= new TH1F(Form("hRingMult_FMD%d%c",det,ringChar),Form("hRingMult_FMD%d%c",det,ringChar),nEtaBins,etaMin,etaMax);
227 fMultList.Add(hRingMult);
230 TH1I* hEvents = (TH1I*)fList->FindObject(fEvents.Data());
235 for(Int_t det = 1; det<=3; det++) {
236 Int_t maxRing = (det == 1 ? 0 : 1);
237 for(Int_t ring = 0;ring<=maxRing;ring++) {
239 Char_t ringChar = (ring == 0 ? 'I' : 'O');
240 for(Int_t v=0; v< nVertexBins; v++) {
243 hPrimVtx = (TH1F*)fMultList.FindObject(Form("hMCHits_vtxbin%d",v));
245 hPrimVtx = (TH1F*)fList->FindObject(GetPrimName(what,det,ringChar,v));
248 Float_t nPrimevents = hMCEvents->GetBinContent(v+1);
249 Float_t xb = hPrimVtx->GetNbinsX();
250 Float_t xr = hPrimVtx->GetXaxis()->GetXmax() - hPrimVtx->GetXaxis()->GetXmin();
251 hPrimVtx->Scale(xb / xr );
253 hPrimVtx->Scale(1/nPrimevents);
257 Double_t delta = 2*pars->GetVtxCutZ()/pars->GetNvtxBins();
258 Float_t vtxZ1 = (delta*v) - pars->GetVtxCutZ();
259 Float_t vtxZ2 = (delta*(v+1)) - pars->GetVtxCutZ();
261 if(vtxZ1<(-1*fVtxCut) || vtxZ2 >fVtxCut)
263 Float_t nEvents = (Float_t)hEvents->GetBinContent(v+1);
265 //TH1F* multhistproj = (TH1F*)fList->FindObject(Form("dNdeta_FMD%d%c_vtxbin%d_proj",det,ringChar,v));
266 TH1F* multhistproj = (TH1F*)fList->FindObject(GetAnalysisName(what,det,ringChar,v));
268 multhistproj->Scale(1/nEvents);
269 Float_t xnBins = multhistproj->GetNbinsX();
270 Float_t xrange = multhistproj->GetXaxis()->GetXmax() - multhistproj->GetXaxis()->GetXmin();
271 multhistproj->Scale(xnBins / xrange);
275 Int_t nNonZero = 0, nNonZeroInData = 0;
279 for(Int_t i =1;i<=multhistproj->GetNbinsX();i++) {
280 if(multhistproj->GetBinContent(i) !=0)
283 Int_t nBinsOld = fNbinsToCut;
284 if(det == 2 && ringChar =='I') {
287 TH1F* hRingMult = (TH1F*)fMultList.FindObject(Form("hRingMult_FMD%d%c",det,ringChar));
289 for(Int_t i=1; i<=hRingMult->GetNbinsX(); i++) {
290 if(multhistproj->GetBinContent(i)!=0) {
292 if(nNonZeroInData <=fNbinsToCut || nNonZeroInData > (nNonZero - fNbinsToCut)) {
295 Float_t oldweight = 0;
297 if(hRingMult->GetBinError(i)>0) {
298 oldweight = 1/TMath::Power(hRingMult->GetBinError(i),2);
299 oldwav = oldweight*hRingMult->GetBinContent(i);
301 Float_t weight = 1/TMath::Power(multhistproj->GetBinError(i),2);
302 Float_t wav = oldwav + weight*multhistproj->GetBinContent(i);
303 Float_t sumofw = oldweight + weight;
305 Float_t error = 1/TMath::Sqrt(sumofw);
307 hRingMult->SetBinContent(i,wav/sumofw);
308 hRingMult->SetBinError(i,error);
315 TH1F* sumMultHist = (TH1F*)fMultList.FindObject(Form("hMult_vtxbin%d",v));
316 for(Int_t i =1;i<=sumMultHist->GetNbinsX();i++) {
317 if(multhistproj->GetBinContent(i) != 0 ) {
320 if(nNonZeroInData <=fNbinsToCut || nNonZeroInData > (nNonZero - fNbinsToCut)) {
323 if(sumMultHist->GetBinContent(i) == 0 && multhistproj->GetBinContent(i) != 0){
324 sumMultHist->SetBinContent(i,multhistproj->GetBinContent(i));
325 sumMultHist->SetBinError(i,multhistproj->GetBinError(i));
330 Float_t sumofw = (1/TMath::Power(multhistproj->GetBinError(i),2)) + (1/TMath::Power(sumMultHist->GetBinError(i),2));
331 Float_t wav = (multhistproj->GetBinContent(i)*(1/TMath::Power(multhistproj->GetBinError(i),2)) + sumMultHist->GetBinContent(i)*(1/TMath::Power(sumMultHist->GetBinError(i),2)))/sumofw;
332 Float_t error = 1/TMath::Sqrt(sumofw);
333 sumMultHist->SetBinContent(i, wav);
334 sumMultHist->SetBinError(i, error);
340 fNbinsToCut = nBinsOld;
346 TH1F* sumMult = new TH1F("hSumMult","hSumMult",nEtaBins,etaMin,etaMax);
348 fMultList.Add(sumMult);
349 TH1F* primMult = new TH1F("hPrimMult","hPrimMult",nEtaBins,etaMin,etaMax);
351 fMultList.Add(primMult);
353 Float_t wav = 0, sumofw=0, weight = 0, primwav = 0, primsumofw=0, primweight = 0;//, etaofbin = 0;
354 for(Int_t i =1; i<=sumMult->GetNbinsX();i++) {
356 for(Int_t v = 0; v<nVertexBins;v++) {
358 hPrimVtx = (TH1F*)fMultList.FindObject(Form("hMCHits_vtxbin%d",v));
360 hPrimVtx = (TH1F*)fList->FindObject(GetPrimName(what,0,0,v));
361 TH1F* sumMultHist = (TH1F*)fMultList.FindObject(Form("hMult_vtxbin%d",v));
362 //etaofbin += sumMultHist->GetBinCenter(i);
363 // if( hPrimVtx->GetBinContent(i)!=0 && hPrimVtx->GetBinError(i)>0.001 && sumMultHist->GetBinContent(i)!=0) {
364 if( hPrimVtx->GetBinContent(i)!=0) {
365 primweight = 1/TMath::Power(hPrimVtx->GetBinError(i),2);
366 primwav = primwav + primweight*hPrimVtx->GetBinContent(i);
367 primsumofw = primsumofw + primweight;
369 if(sumMultHist->GetBinContent(i)!=0) {
371 weight = 1/TMath::Power(sumMultHist->GetBinError(i),2);
372 wav = wav + weight*sumMultHist->GetBinContent(i);
373 sumofw = sumofw + weight;
377 if( primsumofw !=0 ) {// && sumofw !=0) {
378 Float_t primerror = 1/TMath::Sqrt(primsumofw);
380 primMult->SetBinContent(i,primwav/primsumofw);
381 primMult->SetBinError(i,primerror);
384 primMult->SetBinContent(i,0);
385 primMult->SetBinError(i,0);
390 Float_t error = 1/TMath::Sqrt(sumofw);
392 sumMult->SetBinContent(i,wav/sumofw);
393 sumMult->SetBinError(i,error);
407 //_____________________________________________________________________
408 void AliFMDDndeta::DrawDndeta(Analysis what, Int_t rebin) {
411 AliWarning("Not initialised - call Init to remedy");
415 if(!fIsGenerated[what]) {
416 AliWarning("Not generated - generate first then draw!");
422 AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance();
423 TCanvas* c1 = new TCanvas("cvertexbins","Overlaps",1400,800);
425 Int_t nVertexBins = pars->GetNvtxBins();
427 TH1I* hEvents = (TH1I*)fList->FindObject(fEvents.Data());
428 TH1I* hMCEvents = (TH1I*)fList->FindObject(fPrimEvents.Data());
431 for(Int_t det = 1; det<=3; det++) {
432 Int_t maxRing = (det == 1 ? 0 : 1);
433 for(Int_t ring = 0;ring<=maxRing;ring++) {
434 for(Int_t v=0; v< nVertexBins; v++) {
435 Char_t ringChar = (ring == 0 ? 'I' : 'O');
436 Double_t delta = 2*pars->GetVtxCutZ()/pars->GetNvtxBins();
437 Float_t vtxZ1 = (delta*v) - pars->GetVtxCutZ();
438 Float_t vtxZ2 = (delta*(v+1)) - pars->GetVtxCutZ();
440 if(vtxZ1<(-1*fVtxCut) || vtxZ2 >fVtxCut)
442 Float_t nEvents = (Float_t)hEvents->GetBinContent(v+1);
444 TH1F* multhistproj = (TH1F*)fList->FindObject(GetAnalysisName(what,det,ringChar,v));
449 multhistproj->SetMarkerStyle(20);
450 multhistproj->SetMarkerColor(1);
452 if(det==2 && ringChar=='I') {
453 multhistproj->SetMarkerStyle(21);
454 multhistproj->SetMarkerColor(2);
456 if(det==2 && ringChar=='O') {
457 multhistproj->SetMarkerStyle(3);
458 multhistproj->SetMarkerColor(3);
460 if(det==3 && ringChar=='I') {
461 multhistproj->SetMarkerStyle(22);
462 multhistproj->SetMarkerColor(4);
464 if(det==3 && ringChar=='O') {
465 multhistproj->SetMarkerStyle(23);
466 multhistproj->SetMarkerColor(6);
473 hPrimVtx = (TH1F*)fMultList.FindObject(Form("hMCHits_vtxbin%d",v));
475 hPrimVtx = (TH1F*)fList->FindObject(GetPrimName(what,det,ringChar,v));
477 hPrimVtx->SetTitle("");
478 TLatex* l = new TLatex(0.14,0.92,Form("Vtx range [%.1f, %.1f], %d events",vtxZ1,vtxZ2,(Int_t)nEvents));
480 hPrimVtx->SetFillColor(kGray);
481 hPrimVtx->SetLabelFont(132,"xyz");
482 hPrimVtx->SetStats(0000);
483 hPrimVtx->GetXaxis()->SetTitle("#eta");
484 hPrimVtx->GetYaxis()->SetRangeUser(0,15);
485 hPrimVtx->DrawCopy("E3");
487 multhistproj->DrawCopy("same");
491 multhistproj->DrawCopy("same");
498 for(Int_t v=0; v< nVertexBins; v++) {
499 TH1F* sumMultHist = (TH1F*)fMultList.FindObject(Form("hMult_vtxbin%d",v));
501 sumMultHist->SetMarkerStyle(25);
502 sumMultHist->DrawCopy("same");
505 TH1F* primMult = (TH1F*)fMultList.FindObject("hPrimMult");
506 TH1F* sumMult = (TH1F*)fMultList.FindObject("hSumMult");
507 sumMult->SetMarkerStyle(23);
508 sumMult->SetMarkerColor(kRed);
509 for(Int_t det = 1; det<=3;det++) {
510 Int_t maxRing = (det == 1 ? 0 : 1);
511 for(Int_t iring = 0; iring<=maxRing; iring++) {
512 Char_t ringChar = (iring == 0 ? 'I' : 'O');
513 TH1F* hRingMult= (TH1F*)fMultList.FindObject(Form("hRingMult_FMD%d%c",det,ringChar));
514 hRingMult->Add(primMult,-1);
515 hRingMult->Divide(primMult);
520 //TH1F* hPrim = (TH1F*)fList->FindObject(fPrimEvents.Data());
521 // TFile testhit("/home/canute/ALICE/Simulations/TestOfAnalysis2/hitsdist.root");
522 // TH1F* hHitCor = (TH1F*)testhit.Get("selectedHits");
524 // sumMult->Divide(hHitCor);
525 TH1F* hPrim = (TH1F*)fList->FindObject(fPrimdNdeta.Data());
526 Float_t nPrimevents = hMCEvents->GetEntries();
527 //std::cout<<hMCEvents->GetEntries()<<std::endl;
528 Float_t xb = hPrim->GetNbinsX();
529 Float_t xr = hPrim->GetXaxis()->GetXmax() - hPrim->GetXaxis()->GetXmin();
530 //std::cout<<xb/xr<<std::endl;
531 hPrim->Scale(xb / xr );
533 hPrim->Scale(1/nPrimevents);
535 TFile testin("/home/canute/ALICE/FMDanalysis/GridAnalysis/fmd_dNdeta_hits.root","READ");
536 // TFile testin("/home/canute/ALICE/FMDanalysis/productionData/fmd_dNdeta_hits.root","READ");
537 TH1F* hcorrect = (TH1F*)testin.Get("hReldif");
538 hcorrect->SetName("djarnis");
539 std::cout<<hcorrect<<std::endl;
540 for(Int_t bb = 1;bb<=hcorrect->GetNbinsX();bb++) {
541 hcorrect->SetBinContent(bb,hcorrect->GetBinContent(bb)+1);
544 sumMult->Divide(hcorrect);
548 sumMult->Rebin(rebin);
549 sumMult->Scale(1/rebin);
550 primMult->Rebin(rebin);
551 primMult->Scale(1/rebin);
553 hPrim->Scale(1/rebin);
556 TH1F* hReldif = (TH1F*)sumMult->Clone("hReldif");
557 hReldif->Add(primMult,-1);
558 hReldif->Divide(primMult);
559 // hReldif->Add(hPrim,-1);
560 // hReldif->Divide(hPrim);
562 TCanvas* c2 = new TCanvas("dN/deta","dN/deta",640,960);
563 c2->Divide(1,2);//,0,0);
567 hReldif->SetTitle("");
568 hReldif->GetYaxis()->SetTitle("Relative difference");
569 hReldif->GetYaxis()->SetRangeUser(-0.2,0.2);
570 hReldif->SetStats(0000);
571 hReldif->GetXaxis()->SetTitle("#eta");
573 TLine* zeroLine = new TLine(-6,0,6,0);
574 zeroLine->SetLineWidth(2);
575 zeroLine->SetLineColor(kBlack);
578 hPrim->SetLabelFont(132,"xyz");
579 hPrim->SetFillColor(kGray);
580 primMult->SetFillColor(kBlue);
584 hPrim->GetYaxis()->SetRangeUser(2,10);
585 //hPrim->GetYaxis()->SetRangeUser(0,20);
586 hPrim->SetStats(0000);
587 hPrim->GetXaxis()->SetTitle("#eta");
589 sumMult->DrawCopy("PE");
590 hPrim->DrawCopy("E3same");
591 //primMult->DrawCopy("E3same");
592 hPrim->GetXaxis()->SetTitle("#eta");
594 hPrim->SetMarkerStyle(8);
596 hPrim->DrawCopy("PE3same");
597 sumMult->DrawCopy("PEsame");
598 std::cout<<"FMD 1 "<<sumMult->Integral(sumMult->FindBin(3),sumMult->FindBin(5),"width")<<std::endl;
599 /*TFile* itsfile = TFile::Open(itsfilename);
603 //TList* itslist = (TList*)itsfile->Get("ITS_analysis");
604 //TH1F* itshist0 = (TH1F*)itslist->FindObject("dndeta_check_0");
605 //TH1F* itshist1 = (TH1F*)itslist->FindObject("dndeta_check_1");
606 //TH1F* itshist2 = (TH1F*)itslist->FindObject("dndeta_check_2");
607 TH1F* itshist0 = (TH1F*)itsfile->Get("dndeta/dNdEta");
608 TH1F* itshist1= (TH1F*)itsfile->Get("dndeta/dNdEta_1");
609 TH1F* itshist2 = (TH1F*)itsfile->Get("dndeta/dNdEta_2");
610 itshist0->SetMarkerStyle(27);
611 itshist1->SetMarkerStyle(28);
612 itshist2->SetMarkerStyle(30);
613 itshist0->DrawCopy("same");
614 itshist1->DrawCopy("same");
615 itshist2->DrawCopy("same");
621 TLegend* leg = new TLegend(0.35,0.2,0.65,0.35,"");
622 leg->AddEntry(hPrim,"Primary","pf");
623 //leg->AddEntry(primMult,"Analysed prim","f");
624 leg->AddEntry(sumMult,"Analysis","p");
630 species.Form("mult");
633 species.Form("mult_TrVtx");
636 species.Form("hits");
639 AliWarning("no valid Analysis entry!");
642 TFile fout(Form("fmd_dNdeta_%s.root",species.Data()),"recreate");
649 //_____________________________________________________________________
650 void AliFMDDndeta::CreateSharingEfficiency(const Char_t* filename, Bool_t store) {
653 AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance();
654 //pars->Init(kTRUE,AliFMDAnaParameters::kBackgroundCorrection);
655 Int_t nVertexBins = pars->GetNvtxBins();
658 TH1I* hEvents = (TH1I*)fList->FindObject(fEvents.Data());
659 TH1I* hPrimEvents = (TH1I*)fList->FindObject(fPrimEvents.Data());
661 SetNames(kHitsTrVtx);
662 TH1I* hEventsTrVtx = (TH1I*)fList->FindObject(fEvents.Data());
663 TH1I* hPrimEventsTrVtx = (TH1I*)fList->FindObject(fPrimEvents.Data());
665 AliFMDAnaCalibSharingEfficiency* sharEff = new AliFMDAnaCalibSharingEfficiency();
667 for(Int_t det = 1; det<=3; det++) {
668 Int_t maxRing = (det == 1 ? 0 : 1);
669 for(Int_t ring = 0;ring<=maxRing;ring++) {
670 Char_t ringChar = (ring == 0 ? 'I' : 'O');
671 for(Int_t v=0; v< nVertexBins; v++) {
672 TH1F* hHits = (TH1F*)fList->FindObject(GetAnalysisName(kHits,det, ringChar, v));
673 TH1F* hHitsTrVtx = (TH1F*)fList->FindObject(GetAnalysisName(kHitsTrVtx,det, ringChar, v));
674 TH1F* hMCHits = (TH1F*)fList->FindObject(GetPrimName(kHits,det, ringChar, v));
675 TH1F* hMCHitsTrVtx = (TH1F*)fList->FindObject(GetPrimName(kHitsTrVtx,det, ringChar, v));
677 TH1F* hCorrection = (TH1F*)hHits->Clone(Form("hCorrection_FMD%d%c_vtx%d"));
678 TH1F* hCorrectionTrVtx = (TH1F*)hHitsTrVtx->Clone(Form("hCorrection_FMD%d%c_vtx%d"));
680 hCorrection->Scale(1./(Float_t)hEvents->GetBinContent(v+1));
681 hMCHits->Scale(1./(Float_t)hPrimEvents->GetBinContent(v+1));
682 hCorrectionTrVtx->Scale(1./(Float_t)hEventsTrVtx->GetBinContent(v+1));
683 hMCHitsTrVtx->Scale(1./(Float_t)hPrimEventsTrVtx->GetBinContent(v+1));
684 hCorrection->Divide(hMCHits);
685 hCorrectionTrVtx->Divide(hMCHitsTrVtx);
687 sharEff->SetSharingEff(det,ringChar,v,hCorrection);
688 sharEff->SetSharingEffTrVtx(det,ringChar,v,hCorrectionTrVtx);
689 // std::cout<<hHits<<" "<<hHitsTrVtx<<" "<<hPrim<<" "<<hPrimTrVtx<<std::endl;
696 TFile fsharing(pars->GetPath(pars->GetSharingEffID()),"RECREATE");
697 sharEff->Write(AliFMDAnaParameters::GetSharingEffID());
703 //_____________________________________________________________________