]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/RESONANCES/macros/train/Tender.C
Migration of PWG2/RESONANCES -> PWGLF/RESONANCES
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / train / Tender.C
1 typedef enum AliESDpid::EStartTimeType_t TOFtimeType;
2
3 TString     rsnTenderStorage         ("alien://folder=/alice/data/2010/OCDB");
4 TString     rsnTenderOptions         ("VZERO+TPC+TOF");
5 TOFtimeType rsnTenderTOFtime         = AliESDpid::kTOF_T0;
6 Double_t    rsnTenderTOFres          = 80.0; 
7 Bool_t      rsnTenderTOFcorrExpTimes = kFALSE;
8 Bool_t      rsnTenderTOFapplyT0      = kFALSE;
9
10 //__________________________________________________________________________________________________
11 //
12 // Special function to add tender when no multi handler is used
13 //
14 void AddTender()
15 {
16    Info("Setup", "Adding tender directly to manager");
17    
18    AliTender *tender = new AliTender("AnalysisTender");
19    tender->SetCheckEventSelection(rsnTenderOptions.Contains("SEL"));
20    tender->SetDefaultCDBStorage(rsnTenderStorage.Data());
21    AddTenderSupplies(tender);
22    
23    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
24    mgr->AddTask(tender);
25 }
26
27 //__________________________________________________________________________________________________
28 //
29 // Special function to add tender handler when multi handler is used
30 //
31 void AddTenderHandler(AliMultiInputEventHandler *multiInputHandler)
32 {
33    Info("Setup", "Adding tender handler");
34    if (!multiInputHandler) return;
35    
36    // works only with ESDs
37    AliESDInputHandler*esdIH = dynamic_cast<AliESDInputHandler*>(multiInputHandler->GetFirstInputEventHandler());
38    if (!esdIH) {
39       Error("Setup", "No ESD handler found");
40       return;
41    }   
42    
43    // add tender handler and configure tender inside
44    AliTenderInputEventHandler *tenderIH = new AliTenderInputEventHandler();
45    AliTender *tender = tenderIH->GetTender();
46    AddTenderSupplies(tender);
47    
48    // add handler to event handler
49    multiInputHandler->AddInputEventHandler(tenderIH);
50 }
51
52 //__________________________________________________________________________________________________
53 //
54 // Special function to add tender supplies
55 //
56 void AddTenderSupplies(AliTender *tender)
57 {
58    if (!tender) return;
59    
60    Bool_t useV0  = rsnTenderOptions.Contains("V0");
61    Bool_t useTPC = rsnTenderOptions.Contains("TPC");
62    Bool_t useTOF = rsnTenderOptions.Contains("TOF");
63    Bool_t useTRD = rsnTenderOptions.Contains("TRD");
64    Bool_t usePID = rsnTenderOptions.Contains("PID");
65    Bool_t useVTX = rsnTenderOptions.Contains("PrimVtx");
66    Bool_t evSel  = rsnTenderOptions.Contains("SEL");
67    
68    tender->SetCheckEventSelection(evSel);
69    tender->SetDefaultCDBStorage("raw://");
70
71    // VZERO
72    if (useV0) {
73       Info("Setup", "Adding tender supply for VZERO");
74       AliVZEROTenderSupply *vzeroSupply = new AliVZEROTenderSupply("VZEROtender");
75       vzeroSupply->SetDebug(kFALSE);
76       tender->AddSupply(vzeroSupply);
77    }
78    
79    // TPC
80    if (useTPC) {
81       Info("Setup", "Adding tender supply for TPC");
82       AliTPCTenderSupply *tpcSupply = new AliTPCTenderSupply("TPCtender");
83       tpcSupply->SetDebugLevel(2);
84       //tpcSupply->SetMip(50.);
85       tender->AddSupply(tpcSupply);
86    }
87    
88    // TOF
89    if (useTOF) {
90       Info("Setup", "Adding tender supply for TOF");
91       AliTOFTenderSupply *tofTender = new AliTOFTenderSupply("TOFtender");
92       tofTender->SetTimeZeroType(rsnTenderTOFtime);
93       tofTender->SetTOFres(rsnTenderTOFres);
94       tofTender->SetApplyT0(rsnTenderTOFapplyT0);
95       tofTender->SetCorrectExpTimes(rsnTenderTOFcorrExpTimes);
96       tender->AddSupply(tofTender);
97    }
98    
99    // TRD
100    if (useTRD) {
101       Info("Setup", "Adding tender supply for TRD");
102       AliTRDTenderSupply *trdSupply = new AliTRDTenderSupply("TRDtender");
103       tender->AddSupply(trdSupply);
104    }
105    
106    // PID
107    if (usePID) {
108       Info("Setup", "Adding tender supply for PID");
109       tender->AddSupply(new AliPIDTenderSupply("PIDtender"));
110    }
111    
112    // Primary Vertex
113    if (useVTX) {
114       Info("Setup", "Adding tender supply for Primary Vertex");
115       tender->AddSupply(new AliVtxTenderSupply("PriVtxtender"));
116    }
117 }