removed obsolete AliMUONAlignmentRecord classes (AliMillePedeRecord is now used,...
[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 AliMUONAlignmentTask *AddTaskMuonAlignment(
9   TString oldAlignmentOCDB,
10   TString newAlignmentOCDB,
11   Bool_t doAlignment = kTRUE,
12   Bool_t writeRecords = kTRUE,
13   Bool_t readRecords = kFALSE
14  )
15 {
16
17   /// Creates a Muon Alignment task and adds it to the analysis manager.
18
19   // Get the pointer to the existing analysis manager via the static access method.
20   AliAnalysisManager *analysisManager = AliAnalysisManager::GetAnalysisManager();
21   if( !analysisManager )
22   {
23     ::Error("AddTaskMuonAlignment", "No analysis manager to connect to.");
24     return NULL;
25   }
26
27   // get input event handler and check type
28   TString type = analysisManager->GetInputEventHandler()->GetDataType();
29   if( readRecords )
30   {
31
32     // when reading records, AOD are required
33     if (!type.Contains( "AOD" ) )
34     {
35       Error("AddTaskMuonRefit", "AOD input handler needed!");
36       return NULL;
37     }
38
39   } else {
40
41     // ESDs are required otherwise
42     if( !type.Contains( "ESD" ) )
43     {
44       Error("AddTaskMuonRefit", "AOD input handler needed!");
45       return NULL;
46     }
47
48   }
49
50   // Create the task, add it to the manager and configure it.
51   AliMUONAlignmentTask *muonAlign = new AliMUONAlignmentTask( "AliMUONAlignmentTask" );
52   muonAlign->SetOldAlignStorage( oldAlignmentOCDB );
53   muonAlign->SetNewAlignStorage( newAlignmentOCDB );
54   muonAlign->SetLoadOCDBOnce( kTRUE );
55   muonAlign->SetReadRecords( readRecords );
56   muonAlign->SetDoAlignment( doAlignment );
57   muonAlign->SetWriteRecords( writeRecords );
58   muonAlign->SetMergeAlignmentCDBs( kTRUE );
59   muonAlign->SetUnbias( kFALSE );
60
61   analysisManager->AddTask(muonAlign);
62
63   // connect input
64   analysisManager->ConnectInput(muonAlign,  0, analysisManager->GetCommonInputContainer());
65
66   // when writting records, also connect output
67   if( writeRecords )
68   { analysisManager->ConnectOutput(muonAlign,  0, analysisManager->GetCommonOutputContainer()); }
69
70   // return created task
71   return muonAlign;
72
73 }