]> git.uio.no Git - u/mrichter/AliRoot.git/blame - FMD/analysis/AliFMDAnalysisTaskSharing.cxx
Effc++ warnings
[u/mrichter/AliRoot.git] / FMD / analysis / AliFMDAnalysisTaskSharing.cxx
CommitLineData
3bb122c7 1
2#include <TROOT.h>
3#include <TSystem.h>
4#include <TInterpreter.h>
5#include <TChain.h>
6#include <TFile.h>
7#include <TList.h>
8#include <iostream>
9
10#include "AliFMDAnalysisTaskSharing.h"
11#include "AliAnalysisManager.h"
12#include "AliESDFMD.h"
13#include "AliESDEvent.h"
14#include "AliAODEvent.h"
15#include "AliAODHandler.h"
16#include "AliMCEventHandler.h"
17#include "AliStack.h"
18#include "AliESDVertex.h"
19#include "AliFMDAnaParameters.h"
20
21ClassImp(AliFMDAnalysisTaskSharing)
22
23//_____________________________________________________________________
24AliFMDAnalysisTaskSharing::AliFMDAnalysisTaskSharing()
25: fDebug(0),
26 fESD(0x0),
27 fOutputESD(0x0),
8dc823cc 28 foutputESDFMD(0x0),
29 fSharedNext(kFALSE),
30 fSharedPrev(kFALSE)
3bb122c7 31{
32 // Default constructor
33 DefineInput (0, AliESDEvent::Class());
34 DefineOutput(0, AliESDEvent::Class());
35}
36//_____________________________________________________________________
37AliFMDAnalysisTaskSharing::AliFMDAnalysisTaskSharing(const char* name):
38 AliAnalysisTask(name, "AnalysisTaskFMD"),
39 fDebug(0),
40 fESD(0x0),
41 fOutputESD(0x0),
8dc823cc 42 foutputESDFMD(0x0),
43 fSharedNext(kFALSE),
44 fSharedPrev(kFALSE)
45
3bb122c7 46{
47 DefineInput (0, AliESDEvent::Class());
48 DefineOutput(0, AliESDEvent::Class());
49}
50//_____________________________________________________________________
51void AliFMDAnalysisTaskSharing::CreateOutputObjects()
52{
53 AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance();
54
55 AliESDFMD* outputESDFMD = 0;
56 Int_t nvtxbins = pars->GetNvtxBins();
57
58 fOutputESD = new AliESDEvent();
59 fOutputESD->CreateStdContent();
60
61 foutputESDFMD = new AliESDFMD();
62}
63//_____________________________________________________________________
64void AliFMDAnalysisTaskSharing::ConnectInputData(Option_t */*option*/)
65{
66 fESD = (AliESDEvent*)GetInputData(0);
67}
68//_____________________________________________________________________
69void AliFMDAnalysisTaskSharing::Exec(Option_t */*option*/)
70{
8dc823cc 71
3bb122c7 72
73 AliESD* old = fESD->GetAliESDOld();
74 if (old) {
75 fESD->CopyFromOldESD();
76 }
77
78 foutputESDFMD->Clear();
79
80 fOutputESD->SetPrimaryVertexSPD(fESD->GetPrimaryVertexSPD());
81
82 AliESDFMD* fmd = fESD->GetFMDData();
83
84 if (!fmd) return;
85
86 for(UShort_t det=1;det<=3;det++) {
87 Int_t nRings = (det==1 ? 1 : 2);
88 for (UShort_t ir = 0; ir < nRings; ir++) {
89 Char_t ring = (ir == 0 ? 'I' : 'O');
90 UShort_t nsec = (ir == 0 ? 20 : 40);
91 UShort_t nstr = (ir == 0 ? 512 : 256);
92 for(UShort_t sec =0; sec < nsec; sec++) {
93 for(UShort_t strip = 0; strip < nstr; strip++) {
94 foutputESDFMD->SetMultiplicity(det,ring,sec,strip,0.);
95 Float_t mult = fmd->Multiplicity(det,ring,sec,strip);
96 if(mult == AliESDFMD::kInvalidMult) continue;
97 //Sharing algorithm goes here
3bb122c7 98
8dc823cc 99 Float_t Eprev = 0;
100 Float_t Enext = 0;
101 if(strip != 0)
102 if(fmd->Multiplicity(det,ring,sec,strip-1) != AliESDFMD::kInvalidMult)
103 Eprev = fmd->Multiplicity(det,ring,sec,strip-1);
104 if(strip != nstr - 1)
105 if(fmd->Multiplicity(det,ring,sec,strip+1) != AliESDFMD::kInvalidMult)
106 Enext = fmd->Multiplicity(det,ring,sec,strip+1);
107
108 Float_t nParticles = GetMultiplicityOfStrip(mult,Eprev,Enext,det,ring);
109 //std::cout<<nParticles<<" "<<mult<<" "<<Eprev<<" "<<Enext<<" "<<det<<" "<<ring<<" "<<sec<<" "<<strip<<std::endl;
110 foutputESDFMD->SetMultiplicity(det,ring,sec,strip,nParticles);
3bb122c7 111 foutputESDFMD->SetEta(det,ring,sec,strip,fmd->Eta(det,ring,sec,strip));
112
113 }
114 }
115 }
116 }
117 fOutputESD->SetFMDData(foutputESDFMD);
118
119 PostData(0, fOutputESD);
120
121}
8dc823cc 122//_____________________________________________________________________
123Float_t AliFMDAnalysisTaskSharing::GetMultiplicityOfStrip(Float_t mult,
124 Float_t Eprev,
125 Float_t Enext,
126 Int_t det,
127 Char_t ring) {
128 AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance();
129 Float_t nParticles = 0;
130 Float_t cutLow = 0.1;
131 Float_t cutHigh = pars->GetMPV(det,ring) - pars->GetSigma(det,ring);
132 Float_t Etotal = mult;
133
134 if(fSharedNext) {
135 fSharedNext = kFALSE;
136 fSharedPrev = kTRUE;
137 return 0.;
138 }
139
140 if(Etotal < 0.33*pars->GetMPV(det,ring)) {
141 fSharedNext = kFALSE;
142
143 return 0.;
144 }
145
146 if(Eprev > cutLow && Eprev < cutHigh && !fSharedPrev ) {
147 Etotal += Eprev;
148 }
149
150 if(Enext > cutLow && Enext < cutHigh ) {
151 Etotal += Enext;
152 fSharedNext = kTRUE;
153 }
154
155 if(fSharedPrev)
156 fSharedPrev = kFALSE;
157
158 if(Etotal > cutLow)
159 nParticles = 1;
160
161
162
163 return nParticles;
164}
165
3bb122c7 166//_____________________________________________________________________
167//
168// EOF
169//