641f6a2afab0037e22175ce09540f67e0f79516e
[u/mrichter/AliRoot.git] / PWG2 / FORWARD / analysis2 / scripts / RunCopyMergeEff.C
1 Color_t Color(UShort_t d, Char_t r ) const 
2
3   return ((d == 1 ? kRed : (d == 2 ? kGreen : kBlue))
4           + ((r == 'I' || r == 'i') ? 2 : -2));
5 }
6
7 /** 
8  * 
9  * @param sys       Collision system 
10  * @param cms       Center of mass energy per nucleon in GeV
11  * @param field     Magnetic field 
12  * 
13  * @ingroup pwg2_forward_analysis_scripts
14  */
15 void
16 RunCopyMergeEff(UShort_t sys, UShort_t cms, Short_t field)
17 {
18   gROOT->Macro("$ALICE_ROOT/PWG2/FORWARD/analysis2/scripts/LoadLibs.C");
19   gSystem->Load("libPWG2forward.so");
20
21   AliFMDAnaParameters* p = AliFMDAnaParameters::Instance();
22   p->SetEnergy(Float_t(cms));
23   p->SetMagField(Float_t(field));
24   p->SetCollisionSystem(sys == 1 ? "pp" : "PbPb");
25   p->Init(true, AliFMDAnaParameters::kBackgroundCorrection|
26           AliFMDAnaParameters::kSharingEfficiency);
27   
28   Int_t    nVtx   = p->GetNvtxBins();
29   Double_t minVtx = -p->GetVtxCutZ();
30   Double_t maxVtx = -p->GetVtxCutZ();
31   Int_t    nEta   = p->GetNetaBins();
32   Double_t minEta = p->GetEtaMin();
33   Double_t maxEta = p->GetEtaMax();
34   
35   TAxis vtxAxis(nVtx, minVtx, maxVtx);
36   AliFMDCorrMergingEfficiency* m = new AliFMDCorrMergingEfficiency;
37   m->SetVertexAxis(nVtx, minVtx, maxVtx);
38   
39   for (UShort_t d = 1; d <= 3; d++) { 
40     UShort_t nQ = (d == 1 ? 1 : 2);
41     for (UShort_t q = 0; q < nQ; q++) { 
42       Char_t r = (q == 0 ? 'I' : 'O');
43       
44       for (UShort_t b = 1; b <= nVtx; b++) { 
45         TH1F* oldmap = p->GetSharingEfficiency(d, r, b-1);
46         if (!oldmap) {
47           Warning("RunCopyMergeEff",
48                   "Didn't find secondary map correction "
49                   "for FMD%d%c, vertex bin %3d", d, r, b);
50           continue;
51         }
52         
53         TH1D* newmap = new TH1D(Form("FMD%d%c_vtxbin%03d", d, r, b), 
54                                 Form("Merging efficiency for FMD%d%c "
55                                      "in vertex bin %d [%+8.4f,%+8.4f]", 
56                                      d, r, b, vtxAxis.GetBinLowEdge(b), 
57                                      vtxAxis.GetBinUpEdge(b)), 
58                                 nEta, minEta, maxEta);
59         newmap->SetXTitle("#eta");
60         newmap->SetYTitle("dN_{ch,i,incl}/d#eta / #sum_{i} N_{ch,i,FMD}");
61         newmap->SetDirectory(0);
62         newmap->SetStats(0);
63         newmap->Sumw2();
64         newmap->Add(oldmap);
65         
66         Info("RunCopyMergeEff",
67              "Copying %s to %s", oldmap->GetName(), newmap->GetName());
68         
69         m->SetCorrection(d, r, b, newmap);
70       }
71     }
72   }
73   AliForwardCorrectionManager& mgr = AliForwardCorrectionManager::Instance();
74   TString fname(mgr.GetFileName(AliForwardCorrectionManager::kMergingEfficiency,
75                                 sys, cms, field, false));
76   TFile* output = TFile::Open(fname.Data(), "RECREATE");
77   if (!output) { 
78     Warning("Run", "Failed to open output file %s", fname.Data());
79     return kFALSE;
80   }
81   m->Write(mgr.GetObjectName(AliForwardCorrectionManager::kMergingEfficiency));
82   output->Write();
83   output->Close();
84   Info("Run", "File %s created.  It should be copied to %s and stored in SVN",
85        fname.Data(),
86        mgr.GetFileDir(AliForwardCorrectionManager::kMergingEfficiency));
87   
88 }
89 //
90 // EOF
91 //