added headers needed for compilation
[u/mrichter/AliRoot.git] / MUON / AddTaskMuonAlignment.C
1 /// \ingroup macros
2 /// \file AddTaskMuonAlignment.C
3 /// \brief Macro to add an AliMUONAlignmentTask to an analysis train
4 ///
5 /// \author Javier Castillo, CEA/Saclay - Irfu/SPhN
6 /// \author Hugo Pereira Da Costa, CEA/Saclay - Irfu/SPhN
7
8 #include "AliAnalysisManager.h"
9 #include "AliMUONAlignmentTask.h"
10 #include "AliVEventHandler.h"
11
12 AliMUONAlignmentTask *AddTaskMuonAlignment(
13   TString oldAlignmentOCDB,
14   TString newAlignmentOCDB,
15   Bool_t doAlignment = kTRUE,
16   Bool_t writeRecords = kTRUE,
17   Bool_t readRecords = kFALSE
18  )
19 {
20
21   /// Creates a Muon Alignment task and adds it to the analysis manager.
22
23   // Get the pointer to the existing analysis manager via the static access method.
24   AliAnalysisManager *analysisManager = AliAnalysisManager::GetAnalysisManager();
25   if( !analysisManager )
26   {
27     ::Error("AddTaskMuonAlignment", "No analysis manager to connect to.");
28     return NULL;
29   }
30
31   // get input event handler and check type
32   TString type = analysisManager->GetInputEventHandler()->GetDataType();
33   if( readRecords )
34   {
35
36     // when reading records, AOD are required
37     if (!type.Contains( "AOD" ) )
38     {
39       Error("AddTaskMuonRefit", "AOD input handler needed!");
40       return NULL;
41     }
42
43   } else {
44
45     // ESDs are required otherwise
46     if( !type.Contains( "ESD" ) )
47     {
48       Error("AddTaskMuonRefit", "AOD input handler needed!");
49       return NULL;
50     }
51
52   }
53
54   // Create the task, add it to the manager and configure it.
55   AliMUONAlignmentTask *muonAlign = new AliMUONAlignmentTask( "AliMUONAlignmentTask" );
56   muonAlign->SetOldAlignStorage( oldAlignmentOCDB );
57   muonAlign->SetNewAlignStorage( newAlignmentOCDB );
58   muonAlign->SetLoadOCDBOnce( kTRUE );
59   muonAlign->SetReadRecords( readRecords );
60   muonAlign->SetDoAlignment( doAlignment );
61   muonAlign->SetWriteRecords( writeRecords );
62   muonAlign->SetMergeAlignmentCDBs( kTRUE );
63   muonAlign->SetUnbias( kFALSE );
64
65   analysisManager->AddTask(muonAlign);
66
67   // connect input
68   analysisManager->ConnectInput(muonAlign,  0, analysisManager->GetCommonInputContainer());
69
70   // when writting records, also connect output
71   if( writeRecords )
72   { analysisManager->ConnectOutput(muonAlign,  0, analysisManager->GetCommonOutputContainer()); }
73
74   // return created task
75   return muonAlign;
76
77 }