4 #include <TInterpreter.h>
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"
18 #include "AliESDVertex.h"
19 #include "AliFMDAnaParameters.h"
21 ClassImp(AliFMDAnalysisTaskSharing)
23 //_____________________________________________________________________
24 AliFMDAnalysisTaskSharing::AliFMDAnalysisTaskSharing()
30 // Default constructor
31 DefineInput (0, AliESDEvent::Class());
32 DefineOutput(0, AliESDEvent::Class());
34 //_____________________________________________________________________
35 AliFMDAnalysisTaskSharing::AliFMDAnalysisTaskSharing(const char* name):
36 AliAnalysisTask(name, "AnalysisTaskFMD"),
42 DefineInput (0, AliESDEvent::Class());
43 DefineOutput(0, AliESDEvent::Class());
45 //_____________________________________________________________________
46 void AliFMDAnalysisTaskSharing::CreateOutputObjects()
48 AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance();
50 AliESDFMD* outputESDFMD = 0;
51 Int_t nvtxbins = pars->GetNvtxBins();
53 fOutputESD = new AliESDEvent();
54 fOutputESD->CreateStdContent();
56 foutputESDFMD = new AliESDFMD();
58 //_____________________________________________________________________
59 void AliFMDAnalysisTaskSharing::ConnectInputData(Option_t */*option*/)
61 fESD = (AliESDEvent*)GetInputData(0);
63 //_____________________________________________________________________
64 void AliFMDAnalysisTaskSharing::Exec(Option_t */*option*/)
66 AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance();
68 AliESD* old = fESD->GetAliESDOld();
70 fESD->CopyFromOldESD();
73 foutputESDFMD->Clear();
75 fOutputESD->SetPrimaryVertexSPD(fESD->GetPrimaryVertexSPD());
77 AliESDFMD* fmd = fESD->GetFMDData();
81 for(UShort_t det=1;det<=3;det++) {
82 Int_t nRings = (det==1 ? 1 : 2);
83 for (UShort_t ir = 0; ir < nRings; ir++) {
84 Char_t ring = (ir == 0 ? 'I' : 'O');
85 UShort_t nsec = (ir == 0 ? 20 : 40);
86 UShort_t nstr = (ir == 0 ? 512 : 256);
87 for(UShort_t sec =0; sec < nsec; sec++) {
88 for(UShort_t strip = 0; strip < nstr; strip++) {
89 foutputESDFMD->SetMultiplicity(det,ring,sec,strip,0.);
90 Float_t mult = fmd->Multiplicity(det,ring,sec,strip);
91 if(mult == AliESDFMD::kInvalidMult) continue;
92 //Sharing algorithm goes here
93 if(mult < 0.75) continue;
95 foutputESDFMD->SetMultiplicity(det,ring,sec,strip,1.);
96 foutputESDFMD->SetEta(det,ring,sec,strip,fmd->Eta(det,ring,sec,strip));
102 fOutputESD->SetFMDData(foutputESDFMD);
104 PostData(0, fOutputESD);
107 //_____________________________________________________________________