]> git.uio.no Git - u/mrichter/AliRoot.git/blob - FMD/analysis/AliFMDAnalysisTaskSharing.cxx
The FMD analysis tasks. This is a first version and there is work to do
[u/mrichter/AliRoot.git] / FMD / analysis / AliFMDAnalysisTaskSharing.cxx
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
21 ClassImp(AliFMDAnalysisTaskSharing)
22
23 //_____________________________________________________________________
24 AliFMDAnalysisTaskSharing::AliFMDAnalysisTaskSharing()
25 : fDebug(0),
26   fESD(0x0),
27   fOutputESD(0x0),
28   foutputESDFMD(0x0)
29 {
30   // Default constructor
31   DefineInput (0, AliESDEvent::Class());
32   DefineOutput(0, AliESDEvent::Class());
33 }
34 //_____________________________________________________________________
35 AliFMDAnalysisTaskSharing::AliFMDAnalysisTaskSharing(const char* name):
36     AliAnalysisTask(name, "AnalysisTaskFMD"),
37     fDebug(0),
38     fESD(0x0),
39     fOutputESD(0x0),
40     foutputESDFMD(0x0)
41 {
42   DefineInput (0, AliESDEvent::Class());
43   DefineOutput(0, AliESDEvent::Class());
44 }
45 //_____________________________________________________________________
46 void AliFMDAnalysisTaskSharing::CreateOutputObjects()
47 {
48   AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance();
49   
50   AliESDFMD* outputESDFMD      = 0; 
51   Int_t nvtxbins = pars->GetNvtxBins();
52   
53   fOutputESD    = new AliESDEvent();
54   fOutputESD->CreateStdContent();
55   
56   foutputESDFMD = new AliESDFMD();
57 }
58 //_____________________________________________________________________
59 void AliFMDAnalysisTaskSharing::ConnectInputData(Option_t */*option*/)
60 {
61   fESD = (AliESDEvent*)GetInputData(0);
62 }
63 //_____________________________________________________________________
64 void AliFMDAnalysisTaskSharing::Exec(Option_t */*option*/)
65 {
66   AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance();
67   
68   AliESD* old = fESD->GetAliESDOld();
69   if (old) {
70     fESD->CopyFromOldESD();
71   }
72   
73   foutputESDFMD->Clear();
74   
75   fOutputESD->SetPrimaryVertexSPD(fESD->GetPrimaryVertexSPD());
76   
77   AliESDFMD* fmd = fESD->GetFMDData();
78   
79   if (!fmd) return;
80   
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;
94           
95           foutputESDFMD->SetMultiplicity(det,ring,sec,strip,1.);
96           foutputESDFMD->SetEta(det,ring,sec,strip,fmd->Eta(det,ring,sec,strip));
97           
98         }
99       }
100     }
101   }
102   fOutputESD->SetFMDData(foutputESDFMD);
103     
104   PostData(0, fOutputESD); 
105   
106 }
107 //_____________________________________________________________________
108 //
109 // EOF
110 //