ROOT logo
typedef enum AliESDpid::EStartTimeType_t TOFtimeType;

TString     rsnTenderStorage         ("alien://folder=/alice/data/2010/OCDB");
TString     rsnTenderOptions         ("VZERO+TPC+TOF");
TOFtimeType rsnTenderTOFtime         = AliESDpid::kTOF_T0;
Double_t    rsnTenderTOFres          = 80.0; 
Bool_t      rsnTenderTOFcorrExpTimes = kFALSE;
Bool_t      rsnTenderTOFapplyT0      = kFALSE;

//__________________________________________________________________________________________________
//
// Special function to add tender when no multi handler is used
//
void AddTender()
{
   Info("Setup", "Adding tender directly to manager");
   
   AliTender *tender = new AliTender("AnalysisTender");
   tender->SetCheckEventSelection(rsnTenderOptions.Contains("SEL"));
   tender->SetDefaultCDBStorage(rsnTenderStorage.Data());
   AddTenderSupplies(tender);
   
   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
   mgr->AddTask(tender);
}

//__________________________________________________________________________________________________
//
// Special function to add tender handler when multi handler is used
//
void AddTenderHandler(AliMultiInputEventHandler *multiInputHandler)
{
   Info("Setup", "Adding tender handler");
   if (!multiInputHandler) return;
   
   // works only with ESDs
   AliESDInputHandler*esdIH = dynamic_cast<AliESDInputHandler*>(multiInputHandler->GetFirstInputEventHandler());
   if (!esdIH) {
      Error("Setup", "No ESD handler found");
      return;
   }   
   
   // add tender handler and configure tender inside
   AliTenderInputEventHandler *tenderIH = new AliTenderInputEventHandler();
   AliTender *tender = tenderIH->GetTender();
   AddTenderSupplies(tender);
   
   // add handler to event handler
   multiInputHandler->AddInputEventHandler(tenderIH);
}

//__________________________________________________________________________________________________
//
// Special function to add tender supplies
//
void AddTenderSupplies(AliTender *tender)
{
   if (!tender) return;
   
   Bool_t useV0  = rsnTenderOptions.Contains("V0");
   Bool_t useTPC = rsnTenderOptions.Contains("TPC");
   Bool_t useTOF = rsnTenderOptions.Contains("TOF");
   Bool_t useTRD = rsnTenderOptions.Contains("TRD");
   Bool_t usePID = rsnTenderOptions.Contains("PID");
   Bool_t useVTX = rsnTenderOptions.Contains("PrimVtx");
   Bool_t evSel  = rsnTenderOptions.Contains("SEL");
   
   tender->SetCheckEventSelection(evSel);
   tender->SetDefaultCDBStorage("raw://");

   // VZERO
   if (useV0) {
      Info("Setup", "Adding tender supply for VZERO");
      AliVZEROTenderSupply *vzeroSupply = new AliVZEROTenderSupply("VZEROtender");
      vzeroSupply->SetDebug(kFALSE);
      tender->AddSupply(vzeroSupply);
   }
   
   // TPC
   if (useTPC) {
      Info("Setup", "Adding tender supply for TPC");
      AliTPCTenderSupply *tpcSupply = new AliTPCTenderSupply("TPCtender");
      tpcSupply->SetDebugLevel(2);
      //tpcSupply->SetMip(50.);
      tender->AddSupply(tpcSupply);
   }
   
   // TOF
   if (useTOF) {
      Info("Setup", "Adding tender supply for TOF");
      AliTOFTenderSupply *tofTender = new AliTOFTenderSupply("TOFtender");
      tofTender->SetTimeZeroType(rsnTenderTOFtime);
      tofTender->SetTOFres(rsnTenderTOFres);
      tofTender->SetApplyT0(rsnTenderTOFapplyT0);
      tofTender->SetCorrectExpTimes(rsnTenderTOFcorrExpTimes);
      tender->AddSupply(tofTender);
   }
   
   // TRD
   if (useTRD) {
      Info("Setup", "Adding tender supply for TRD");
      AliTRDTenderSupply *trdSupply = new AliTRDTenderSupply("TRDtender");
      tender->AddSupply(trdSupply);
   }
   
   // PID
   if (usePID) {
      Info("Setup", "Adding tender supply for PID");
      tender->AddSupply(new AliPIDTenderSupply("PIDtender"));
   }
   
   // Primary Vertex
   if (useVTX) {
      Info("Setup", "Adding tender supply for Primary Vertex");
      tender->AddSupply(new AliVtxTenderSupply("PriVtxtender"));
   }
}
 Tender.C:1
 Tender.C:2
 Tender.C:3
 Tender.C:4
 Tender.C:5
 Tender.C:6
 Tender.C:7
 Tender.C:8
 Tender.C:9
 Tender.C:10
 Tender.C:11
 Tender.C:12
 Tender.C:13
 Tender.C:14
 Tender.C:15
 Tender.C:16
 Tender.C:17
 Tender.C:18
 Tender.C:19
 Tender.C:20
 Tender.C:21
 Tender.C:22
 Tender.C:23
 Tender.C:24
 Tender.C:25
 Tender.C:26
 Tender.C:27
 Tender.C:28
 Tender.C:29
 Tender.C:30
 Tender.C:31
 Tender.C:32
 Tender.C:33
 Tender.C:34
 Tender.C:35
 Tender.C:36
 Tender.C:37
 Tender.C:38
 Tender.C:39
 Tender.C:40
 Tender.C:41
 Tender.C:42
 Tender.C:43
 Tender.C:44
 Tender.C:45
 Tender.C:46
 Tender.C:47
 Tender.C:48
 Tender.C:49
 Tender.C:50
 Tender.C:51
 Tender.C:52
 Tender.C:53
 Tender.C:54
 Tender.C:55
 Tender.C:56
 Tender.C:57
 Tender.C:58
 Tender.C:59
 Tender.C:60
 Tender.C:61
 Tender.C:62
 Tender.C:63
 Tender.C:64
 Tender.C:65
 Tender.C:66
 Tender.C:67
 Tender.C:68
 Tender.C:69
 Tender.C:70
 Tender.C:71
 Tender.C:72
 Tender.C:73
 Tender.C:74
 Tender.C:75
 Tender.C:76
 Tender.C:77
 Tender.C:78
 Tender.C:79
 Tender.C:80
 Tender.C:81
 Tender.C:82
 Tender.C:83
 Tender.C:84
 Tender.C:85
 Tender.C:86
 Tender.C:87
 Tender.C:88
 Tender.C:89
 Tender.C:90
 Tender.C:91
 Tender.C:92
 Tender.C:93
 Tender.C:94
 Tender.C:95
 Tender.C:96
 Tender.C:97
 Tender.C:98
 Tender.C:99
 Tender.C:100
 Tender.C:101
 Tender.C:102
 Tender.C:103
 Tender.C:104
 Tender.C:105
 Tender.C:106
 Tender.C:107
 Tender.C:108
 Tender.C:109
 Tender.C:110
 Tender.C:111
 Tender.C:112
 Tender.C:113
 Tender.C:114
 Tender.C:115
 Tender.C:116
 Tender.C:117
 Tender.C:118