]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/FORWARD/analysis2/AliCopyHeaderTask.cxx
Fixed references from PWG2 -> PWGLF - very efficiently done using ETags.
[u/mrichter/AliRoot.git] / PWGLF / FORWARD / analysis2 / AliCopyHeaderTask.cxx
1 /**
2  * @file   AliCopyHeaderTask.cxx
3  * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
4  * @date   Tue Jul 12 10:59:32 2011
5  * 
6  * @brief  Task to copy ESD header to AOD 
7  * 
8  * @ingroup pwglf_forward_tasks 
9  */
10
11 #include "AliCopyHeaderTask.h"
12 #include "AliESDEvent.h"
13 #include "AliAODEvent.h"
14 #include "AliCentrality.h"
15 #include "AliInputEventHandler.h"
16 #include "TFile.h"
17 #include "AliEventplane.h"
18
19 ClassImp(AliCopyHeaderTask)
20 #if 0 
21 ; // for emacs - do not remove 
22 #endif
23
24 void
25 AliCopyHeaderTask::UserExec(Option_t*)
26 {
27   // 
28   // Called at every event 
29   //
30   // Copies information from ESD header to AOD header
31   // 
32   AliESDEvent* esd = dynamic_cast<AliESDEvent*>(InputEvent());
33   AliAODEvent* aod = dynamic_cast<AliAODEvent*>(AODEvent());
34
35   if (!esd) { 
36     AliWarning("Missing ESD event");
37     return;
38   }
39   if (!aod) { 
40     AliWarning("Missing AOD event");
41     return;
42   }
43   
44   AliAODHeader* aodHeader = aod->GetHeader();
45   if (!aodHeader) { 
46     AliWarning("Missing AOD header");
47     aodHeader = new AliAODHeader(esd->GetRunNumber(),
48                                  esd->GetBunchCrossNumber(),
49                                  esd->GetOrbitNumber(),
50                                  esd->GetPeriodNumber());
51     aod->AddHeader(aodHeader);
52   }
53
54   aodHeader->SetRunNumber(esd->GetRunNumber());
55   aodHeader->SetOfflineTrigger(fInputHandler->IsEventSelected());
56   aodHeader->SetBunchCrossNumber(esd->GetBunchCrossNumber());
57   aodHeader->SetOrbitNumber(esd->GetOrbitNumber());
58   aodHeader->SetPeriodNumber(esd->GetPeriodNumber());
59   aodHeader->SetEventType(esd->GetEventType());
60   aodHeader->SetEventNumberESDFile(esd->GetHeader()->GetEventNumberInFile());
61   if(esd->GetCentrality())
62     aodHeader->SetCentrality(new AliCentrality(*(esd->GetCentrality())));
63   else
64     aodHeader->SetCentrality(0);
65
66   aodHeader->SetFiredTriggerClasses(esd->GetFiredTriggerClasses());
67   aodHeader->SetTriggerMask(esd->GetTriggerMask()); 
68   aodHeader->SetTriggerCluster(esd->GetTriggerCluster());
69   aodHeader->SetL0TriggerInputs(esd->GetHeader()->GetL0TriggerInputs());    
70   aodHeader->SetL1TriggerInputs(esd->GetHeader()->GetL1TriggerInputs());    
71   aodHeader->SetL2TriggerInputs(esd->GetHeader()->GetL2TriggerInputs());    
72   
73   aodHeader->SetMagneticField(esd->GetMagneticField());
74   aodHeader->SetMuonMagFieldScale(esd->GetCurrentDip()/6000.);
75   aodHeader->SetZDCN1Energy(esd->GetZDCN1Energy());
76   aodHeader->SetZDCP1Energy(esd->GetZDCP1Energy());
77   aodHeader->SetZDCN2Energy(esd->GetZDCN2Energy());
78   aodHeader->SetZDCP2Energy(esd->GetZDCP2Energy());
79   aodHeader->SetZDCEMEnergy(esd->GetZDCEMEnergy(0),esd->GetZDCEMEnergy(1));
80
81   TTree* tree = fInputHandler->GetTree();
82   if (tree) {
83     TFile* file = tree->GetCurrentFile();
84     if (file) aodHeader->SetESDFileName(file->GetName());
85   }
86
87   AliEventplane* ep = esd->GetEventplane();
88   if (ep) aodHeader->SetEventplane(ep);
89
90 }
91
92 void
93 AliCopyHeaderTask::Terminate(Option_t*)
94 {
95   // Called at the end of the job  - does nothing 
96 }
97
98 //
99 // EOF
100 //