1 AliAnalysisTask *AddTaskTender(Bool_t useV0=kFALSE,
9 Bool_t usePtFix=kFALSE)
11 if (!(useV0 | useTPC | useTOF | useTRD | usePID | useVTX | | useT0 | useEmc | usePtFix)) {
12 ::Error("AddTaskTender", "No supply added to tender, so tender not created");
15 //get the current analysis manager
16 Bool_t checkEvtSelection = useV0;
17 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
19 ::Error("AddTaskTender", "No analysis manager found.");
22 // currently don't accept AOD input
23 if (!mgr->GetInputEventHandler()->InheritsFrom(AliESDInputHandler::Class())) {
24 ::Error("AddTask_tender_Tender","The analysis tender only works with ESD input!");
28 //========= Add tender to the ANALYSIS manager and set default storage =====
29 AliTender *tender=new AliTender("AnalysisTender");
30 tender->SetCheckEventSelection(checkEvtSelection);
31 tender->SetDefaultCDBStorage("raw://");
34 Bool_t cachePID=kFALSE;
36 //check that that tender is the first task after the pid response
37 TString firstName(mgr->GetTasks()->First()->GetName());
38 Bool_t isSecond=(mgr->GetTasks()->At(1) == (TObject*)tender);
40 if (! (firstName=="PIDResponseTask" && isSecond )){
41 Fatal("AddTaskTender","When using the tender the first task needs to be the PIDResponse and the tender the second task!!!");
45 AliAnalysisTaskPIDResponse *pidResp=(AliAnalysisTaskPIDResponse*)mgr->GetTasks()->First();
46 if (pidResp->GetCachePID()){
48 pidResp->SetCachePID(kFALSE);
52 //========= Attach VZERO supply ======
55 AliVZEROTenderSupply *vzeroSupply=new AliVZEROTenderSupply("VZEROtender");
56 vzeroSupply->SetDebug(kFALSE);
57 tender->AddSupply(vzeroSupply);
61 //========= Attach TPC supply ======
63 AliTPCTenderSupply *tpcSupply=new AliTPCTenderSupply("TPCtender");
64 tpcSupply->SetDebugLevel(2);
65 //tpcSupply->SetMip(50.);
66 tender->AddSupply(tpcSupply);
69 //========= Attach track 1/pt correction supply ======
71 AliTrackFixTenderSupply *trfixSupply=new AliTrackFixTenderSupply("PTInvFix");
72 //trfixSupply->SetDebugLevel(2);
73 tender->AddSupply(trfixSupply);
76 //========= Attach T0 supply ======
78 AliT0TenderSupply *t0Tender = new AliT0TenderSupply("T0tender");
79 t0Tender ->SetPass4LHC11aCorrection(kTRUE);
80 tender->AddSupply(t0Tender);
83 //========= Attach TOF supply ======
85 AliTOFTenderSupply *tofTender = new AliTOFTenderSupply("TOFtender");
86 tender->AddSupply(tofTender);
89 //========= Attach TRD supply ======
91 AliTRDTenderSupply *trdSupply=new AliTRDTenderSupply("TRDtender");
92 trdSupply->SetLoadReferencesFromCDB();
94 trdSupply->AddBadChamber(265); // low drift
95 trdSupply->AddBadChamber(50);
96 trdSupply->AddBadChamber(524); // low drift
97 trdSupply->AddBadChamber(32); // intermediate gain
98 trdSupply->AddBadChamber(15);
99 trdSupply->AddBadChamber(231); // low gain
100 trdSupply->AddBadChamber(273); // intermediate gain
101 trdSupply->AddBadChamber(532);
102 trdSupply->AddBadChamber(5); // low drift
103 trdSupply->AddBadChamber(227);
104 trdSupply->AddBadChamber(287); // low drift
105 trdSupply->AddBadChamber(212); // intermediate gain
106 trdSupply->AddBadChamber(228); // low gain
107 trdSupply->AddBadChamber(52); // low gain
108 trdSupply->AddBadChamber(169); // low drift
109 trdSupply->AddBadChamber(236); // low drift
111 trdSupply->SetPIDmethod(AliTRDTenderSupply::k1DLQpid);
112 trdSupply->SetNormalizationFactor(1./7.603);
113 tender->AddSupply(trdSupply);
116 //========= Attach Primary Vertex supply ======
118 tender->AddSupply(new AliVtxTenderSupply("PriVtxtender"));
121 //========= Attach EMCAL supply ======
123 AliEMCALTenderSupply *emcSupply = new AliEMCALTenderSupply("EmcTender");
124 emcSupply->SetDefaults();
125 tender->AddSupply(emcSupply);
128 //========= Attach PID supply ======
130 AliPIDTenderSupply *pidSupply=new AliPIDTenderSupply("PIDtender");
131 pidSupply->SetCachePID(cachePID);
132 tender->AddSupply(pidSupply);
135 //================================================
137 //================================================
139 // define output containers, please use 'username'_'somename'
140 AliAnalysisDataContainer *coutput1 =
141 mgr->CreateContainer("tender_event", AliESDEvent::Class(),
142 AliAnalysisManager::kExchangeContainer,"default_tender");
144 // connect containers
145 mgr->ConnectInput (tender, 0, mgr->GetCommonInputContainer() );
146 mgr->ConnectOutput (tender, 1, coutput1);