ROOT logo
// 2010
// .x runAnaTrigProof.C(0,"/alice/data","LHC10h_000138396_hlt_clustering",28,kFALSE,"CMBACS2")
// 2011
// .x runAnaTrigProof.C(0,"/alice/data","LHC11h_000166532_p1_HLT",28,kTRUE,"CPBI")

void runAnaTrigProof(Int_t mode = 0, const char *folder = "/alice/data",
		     const char *dataset = "LHC10h_000138396_hlt_clustering",
		     Int_t workers=28,
		     Bool_t usePS = kFALSE,
		     const char *minBias = "CPBI",
		     Int_t firstFile = 0, Int_t lastFile = -1)
{
  gSystem->Load("libANALYSIS");
  gSystem->Load("libANALYSISalice");
  gSystem->Load("libOADB");
  gSystem->AddIncludePath("-I$ALICE_ROOT/include ");

  if (mode==0) {
    // Connect to Proof
    gEnv->SetValue("XSec.GSI.DelegProxy","2");
    Char_t *alienuser = gSystem->Getenv("alien_API_USER");
    cout<<"==> Your AliEn username is: "<<alienuser<<endl;

    TProof *p = TProof::Open(alienuser!=0 ? Form("%s@alice-caf.cern.ch",
						 alienuser) : "alice-caf.cern.ch",
			     workers>0 ? Form("workers=%d",workers) : "");

    //  gProof->GetManager()->SetROOTVersion("VO_ALICE@ROOT::v5-28-00f");
    gProof->EnablePackage("VO_ALICE@AliRoot::v5-02-11-AN");

    //    gProof->Exec("TGrid::Connect(\"alien://\")",kTRUE);
    //    gSystem->Setenv("OADB_PATH","alien:///alice/cern.ch/user/c/cheshkov/OADB");
    //    gProof->Exec("gSystem->Setenv(\"OADB_PATH\",\"alien:///alice/cern.ch/user/c/cheshkov/OADB\")",kTRUE);
    //    gSystem->Setenv("OADB_PATH","alien:///alice/cern.ch/user/a/atoia/OADB");
    //    gProof->Exec("gSystem->Setenv(\"OADB_PATH\",\"alien:///alice/cern.ch/user/a/atoia/OADB\")",kTRUE);
  }

  // Create the analysis manager
  AliAnalysisManager *mgr = new AliAnalysisManager("AliAnaFwdDet");

  AliESDInputHandler* esdH = new AliESDInputHandler();
  esdH->SetInactiveBranches("FMD AliRawDataErrorLogs CaloClusters Cascades EMCALCells EMCALTrigger ESDfriend.fTracks Kinks MuonTracks TrdTracks");
  //  esdH->SetReadFriends(kTRUE);
  esdH->SetReadFriends(kFALSE);
  mgr->SetInputEventHandler(esdH);

  // physics and centrality selection
  if (usePS) {
    gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
    AliPhysicsSelectionTask *physicsSelectionTask = AddTaskPhysicsSelection(kFALSE);
    // Trigger analysis defaults
    AliOADBTriggerAnalysis * oadbTrigAnalysis = new AliOADBTriggerAnalysis("CustomTA");
    oadbTrigAnalysis->SetZDCCorrParameters(0, 0, 4*0.7, 4*0.7);
    physicsSelectionTask->GetPhysicsSelection()->SetCustomOADBObjects(0,0,oadbTrigAnalysis);
    // DefaultPbPb
    AliOADBPhysicsSelection * oadbDefaultPbPb = new AliOADBPhysicsSelection("oadbCustomPbPb");
  
    Int_t triggerCount = 0;
    oadbDefaultPbPb->AddCollisionTriggerClass   ( AliVEvent::kMB,"+CPBI1-B-NOPF-ALLNOTRD,CPBI2_B1-B-[NOPF|PF]-ALLNOTRD","B",triggerCount);
    oadbDefaultPbPb->AddBGTriggerClass          ( AliVEvent::kMB,"+CPBI[1|2_B1]-AC-NOPF-ALLNOTRD","AC",triggerCount);
    oadbDefaultPbPb->AddBGTriggerClass          ( AliVEvent::kMB,"+CPBI[1|2_B1]-E-NOPF-ALLNOTRD","E",triggerCount);
    oadbDefaultPbPb->SetHardwareTrigger         ( triggerCount,"V0A && V0C");
    oadbDefaultPbPb->SetOfflineTrigger          ( triggerCount,"V0A && V0C && !V0ABG && !V0CBG && !TPCLaserWarmUp && ZDCTime");

    triggerCount++;
    // Bug in early running, CVHN_R2-B-NOPF-ALLNOTRD needed explicitly up to run 167814 (to be moved to custom object as soon as all other things are fine)
    //   oadbDefaultPbPb->AddCollisionTriggerClass   ( AliVEvent::kCentral,"+CVHN-B-NOPF-ALLNOTRD,CVHN_R2-B-NOPF-ALLNOTRD,CVHN-B-NOPF-CENTNOTRD,CVHN-B-NOPF-CENTNOTRD,CVHN-B-PF-ALLNOTRD,CVHN-B-PF-CENTNOTRD","B",triggerCount);
    // oadbDefaultPbPb->AddCollisionTriggerClass   ( AliVEvent::kCentral,"+CVHN[|_R2]-B-[NOPF|PF]-[ALL|CENT]NOTRD","B",triggerCount);
    // oadbDefaultPbPb->AddBGTriggerClass          ( AliVEvent::kCentral,"+CVHN-AC-NOPF-[ALL|CENT]NOTRD","AC",triggerCount);
    // oadbDefaultPbPb->AddBGTriggerClass          ( AliVEvent::kCentral,"+CVHN-E-NOPF-[ALL|CENT]NOTRD","E",triggerCount);
    // Also include the semicentral class in the online classes selection (in order not to loose event due to the different time sharing of central and semi-central)
    oadbDefaultPbPb->AddCollisionTriggerClass   ( AliVEvent::kCentral,"+CVHN[|_R2]-B-[NOPF|PF]-[ALL|CENT]NOTRD,CVLN[|_B2|_R1]-B-[NOPF|PF]-ALLNOTRD","B",triggerCount);
    oadbDefaultPbPb->AddBGTriggerClass          ( AliVEvent::kCentral,"+CVHN-AC-NOPF-[ALL|CENT]NOTRD,CVLN-AC-NOPF-ALLNOTRD","AC",triggerCount);
    oadbDefaultPbPb->AddBGTriggerClass          ( AliVEvent::kCentral,"+CVHN-E-NOPF-[ALL|CENT]NOTRD,CVLN-E-NOPF-ALLNOTRD","E",triggerCount);
    oadbDefaultPbPb->SetHardwareTrigger         ( triggerCount,"V0A && V0C && Central");
    oadbDefaultPbPb->SetOfflineTrigger          ( triggerCount,"V0A && V0C && !V0ABG && !V0CBG && !TPCLaserWarmUp && ZDCTime");

    triggerCount++;
    // semicentral includes central ones (and might have different downscaling)
    // Bug in early running, CVHN_R2-B-NOPF-ALLNOTRD,CVLN_B2-B-NOPF-ALLNOTRD needed explicitly up to run 167814 (to be moved to custom object as soon as all other things are fine)
    //   oadbDefaultPbPb->AddCollisionTriggerClass   ( AliVEvent::kSemiCentral,"+CVHN-B-NOPF-ALLNOTRD,CVHN_R2-B-NOPF-ALLNOTRD,CVHN-B-NOPF-CENTNOTRD,CVHN-B-PF-ALLNOTRD,CVHN-B-PF-CENTNOTRD,CVLN-B-NOPF-ALLNOTRD,CVLN_B2-B-NOPF-ALLNOTRD,CVLN-B-PF-ALLNOTRD","B",triggerCount);
    //  oadbDefaultPbPb->AddCollisionTriggerClass   ( AliVEvent::kSemiCentral,"+CVHN[|_R2]-B-[NOPF|PF]-[ALL|CENT]NOTRD,CVLN[|_B2]-B-[NOPF|PF]-ALLNOTRD","B",triggerCount);
    oadbDefaultPbPb->AddCollisionTriggerClass   ( AliVEvent::kSemiCentral,"+CVHN[|_R2]-B-[NOPF|PF]-[ALL|CENT]NOTRD,CVLN[|_B2|_R1]-B-[NOPF|PF]-ALLNOTRD","B",triggerCount);
    oadbDefaultPbPb->AddBGTriggerClass          ( AliVEvent::kSemiCentral,"+CVHN-AC-NOPF-[ALL|CENT]NOTRD,CVLN-AC-NOPF-ALLNOTRD","AC",triggerCount);
    oadbDefaultPbPb->AddBGTriggerClass          ( AliVEvent::kSemiCentral,"+CVHN-E-NOPF-[ALL|CENT]NOTRD,CVLN-E-NOPF-ALLNOTRD","E",triggerCount);
    oadbDefaultPbPb->SetHardwareTrigger         ( triggerCount,"V0A && V0C && SemiCentral && !Central");
    oadbDefaultPbPb->SetOfflineTrigger          ( triggerCount,"V0A && V0C && !V0ABG && !V0CBG && !TPCLaserWarmUp && ZDCTime");

    triggerCount++;
    oadbDefaultPbPb->AddCollisionTriggerClass   ( AliVEvent::kEMCEJE,"+CPBI2EJE-B-NOPF-CENTNOTRD","B",triggerCount);
    oadbDefaultPbPb->AddBGTriggerClass          ( AliVEvent::kEMCEJE,"+CPBI2EJE-ACE-NOPF-CENTNOTRD","ACE",triggerCount);
    oadbDefaultPbPb->SetHardwareTrigger         ( triggerCount,"V0A && V0C");
    // TODO EMC offline check missing, https://savannah.cern.ch/bugs/index.php?87104
    oadbDefaultPbPb->SetOfflineTrigger          ( triggerCount,"V0A && V0C && !V0ABG && !V0CBG && !TPCLaserWarmUp && ZDCTime");
    
    triggerCount++;
    oadbDefaultPbPb->AddCollisionTriggerClass   ( AliVEvent::kEMCEGA,"+CPBI2EGA-B-NOPF-CENTNOTRD","B",triggerCount);
    oadbDefaultPbPb->AddBGTriggerClass          ( AliVEvent::kEMCEGA,"+CPBI2EGA-ACE-NOPF-CENTNOTRD","ACE",triggerCount);
    oadbDefaultPbPb->SetHardwareTrigger         ( triggerCount,"V0A && V0C");
    // TODO EMC offline check missing, https://savannah.cern.ch/bugs/index.php?87104
    oadbDefaultPbPb->SetOfflineTrigger          ( triggerCount,"V0A && V0C && !V0ABG && !V0CBG && !TPCLaserWarmUp && ZDCTime");
  
    triggerCount++;
    oadbDefaultPbPb->AddCollisionTriggerClass   ( AliVEvent::kMUSPB,"+CPBI1MSL-B-NOPF-MUON","B",  triggerCount);
    oadbDefaultPbPb->AddBGTriggerClass          ( AliVEvent::kMUSPB,"+CPBI1MSL-ACE-NOPF-MUON","ACE",triggerCount);
    oadbDefaultPbPb->SetHardwareTrigger         ( triggerCount,"V0A && V0C");                                         
    oadbDefaultPbPb->SetOfflineTrigger          ( triggerCount,"V0A && V0C && !V0ABG && !V0CBG && !TPCLaserWarmUp && ZDCTime");

    triggerCount++;
    oadbDefaultPbPb->AddCollisionTriggerClass   ( AliVEvent::kMUSHPB,"+CPBI1MSH-B-NOPF-MUON","B",  triggerCount);
    oadbDefaultPbPb->AddBGTriggerClass          ( AliVEvent::kMUSHPB,"+CPBI1MSH-ACE-NOPF-MUON","ACE",triggerCount);
    oadbDefaultPbPb->SetHardwareTrigger         ( triggerCount,"V0A && V0C");                                         
    oadbDefaultPbPb->SetOfflineTrigger          ( triggerCount,"V0A && V0C && !V0ABG && !V0CBG && !TPCLaserWarmUp && ZDCTime");
    
    triggerCount++;
    oadbDefaultPbPb->AddCollisionTriggerClass   ( AliVEvent::kMuonUnlikePB,"+CPBI1MUL-B-NOPF-MUON","B",  triggerCount);
    oadbDefaultPbPb->AddBGTriggerClass          ( AliVEvent::kMuonUnlikePB,"+CPBI1MUL-ACE-NOPF-MUON","ACE",triggerCount);
    oadbDefaultPbPb->SetHardwareTrigger         ( triggerCount,"V0A && V0C");                                         
    oadbDefaultPbPb->SetOfflineTrigger          ( triggerCount,"V0A && V0C && !V0ABG && !V0CBG && !TPCLaserWarmUp && ZDCTime");

    triggerCount++;
    oadbDefaultPbPb->AddCollisionTriggerClass   ( AliVEvent::kMuonLikePB,"+CPBI1MLL-B-NOPF-MUON","B",  triggerCount);
    oadbDefaultPbPb->AddBGTriggerClass          ( AliVEvent::kMuonLikePB,"+CPBI1MLL-ACE-NOPF-MUON","ACE",triggerCount);
    oadbDefaultPbPb->SetHardwareTrigger         ( triggerCount,"V0A && V0C");                                         
    oadbDefaultPbPb->SetOfflineTrigger          ( triggerCount,"V0A && V0C && !V0ABG && !V0CBG && !TPCLaserWarmUp && ZDCTime");

    triggerCount++;
    oadbDefaultPbPb->AddCollisionTriggerClass   ( AliVEvent::kPHOSPb,"+CPBI2PHS-B-NOPF-CENTNOTRD","B",  triggerCount);
    oadbDefaultPbPb->AddBGTriggerClass          ( AliVEvent::kPHOSPb,"+CPBI2PHS-ACE-NOPF-CENTNOTRD","ACE",triggerCount);
    oadbDefaultPbPb->SetHardwareTrigger         ( triggerCount,"V0A && V0C");
    oadbDefaultPbPb->SetOfflineTrigger          ( triggerCount,"V0A && V0C && !V0ABG && !V0CBG && !TPCLaserWarmUp && ZDCTime");
  
    physicsSelectionTask->GetPhysicsSelection()->SetCustomOADBObjects(oadbDefaultPbPb,0,0); 
  }

  gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
  AliCentralitySelectionTask *taskCentrality = AddTaskCentrality();

  // Create task
  if (mode==0) {
    gProof->Load(Form("%s/AliAnaVZEROTrigger.cxx++g",
		      gSystem->pwd()));
  }
  else {
    gROOT->LoadMacro(Form("%s/AliAnaVZEROTrigger.cxx++g",
			  gSystem->pwd()));
  }
  AliAnaVZEROTrigger *task = new AliAnaVZEROTrigger("AliAnaVZEROTrigger");
  task->SetMBTrigName(minBias);
  task->Setup("trigger.txt");
  if (usePS) task->SetUsePhysSel(kTRUE);
  
  // Add task
  mgr->AddTask(task);

  // Create containers for input/output
  AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
  AliAnalysisDataContainer *coutput = 
    mgr->CreateContainer("coutput", TList::Class(), 
			 AliAnalysisManager::kOutputContainer, (!usePS) ? Form("VZERO.Trigger.%s.root",dataset) : Form("VZERO.Trigger.PS.%s.root",dataset));

  // Connect input/output
  mgr->ConnectInput(task, 0, cinput);
  mgr->ConnectOutput(task, 1, coutput);


  // Enable debug printouts
  mgr->SetDebugLevel(3);

  if (!mgr->InitAnalysis())
    return;

  mgr->PrintStatus();

  if (mode==0)
    mgr->StartAnalysis("proof", Form("%s/%s",folder,dataset));
  else {
    TGrid::Connect("alien://");
    TChain *chain = new TChain("esdTree");
    TGridResult *res = gGrid->Query(folder,"AliESDs.root");
    Int_t nFiles = res->GetEntries();
    if (lastFile < 0) lastFile = nFiles - 1;
    for(Int_t iFile = firstFile; iFile <= lastFile; ++iFile) {
      TString filename = res->GetKey(iFile, "turl");
      if(filename == "") continue;
      chain->AddFile(filename.Data());
    }
    mgr->StartAnalysis("local", chain);
  }
}

 runAnaTrigProof.C:1
 runAnaTrigProof.C:2
 runAnaTrigProof.C:3
 runAnaTrigProof.C:4
 runAnaTrigProof.C:5
 runAnaTrigProof.C:6
 runAnaTrigProof.C:7
 runAnaTrigProof.C:8
 runAnaTrigProof.C:9
 runAnaTrigProof.C:10
 runAnaTrigProof.C:11
 runAnaTrigProof.C:12
 runAnaTrigProof.C:13
 runAnaTrigProof.C:14
 runAnaTrigProof.C:15
 runAnaTrigProof.C:16
 runAnaTrigProof.C:17
 runAnaTrigProof.C:18
 runAnaTrigProof.C:19
 runAnaTrigProof.C:20
 runAnaTrigProof.C:21
 runAnaTrigProof.C:22
 runAnaTrigProof.C:23
 runAnaTrigProof.C:24
 runAnaTrigProof.C:25
 runAnaTrigProof.C:26
 runAnaTrigProof.C:27
 runAnaTrigProof.C:28
 runAnaTrigProof.C:29
 runAnaTrigProof.C:30
 runAnaTrigProof.C:31
 runAnaTrigProof.C:32
 runAnaTrigProof.C:33
 runAnaTrigProof.C:34
 runAnaTrigProof.C:35
 runAnaTrigProof.C:36
 runAnaTrigProof.C:37
 runAnaTrigProof.C:38
 runAnaTrigProof.C:39
 runAnaTrigProof.C:40
 runAnaTrigProof.C:41
 runAnaTrigProof.C:42
 runAnaTrigProof.C:43
 runAnaTrigProof.C:44
 runAnaTrigProof.C:45
 runAnaTrigProof.C:46
 runAnaTrigProof.C:47
 runAnaTrigProof.C:48
 runAnaTrigProof.C:49
 runAnaTrigProof.C:50
 runAnaTrigProof.C:51
 runAnaTrigProof.C:52
 runAnaTrigProof.C:53
 runAnaTrigProof.C:54
 runAnaTrigProof.C:55
 runAnaTrigProof.C:56
 runAnaTrigProof.C:57
 runAnaTrigProof.C:58
 runAnaTrigProof.C:59
 runAnaTrigProof.C:60
 runAnaTrigProof.C:61
 runAnaTrigProof.C:62
 runAnaTrigProof.C:63
 runAnaTrigProof.C:64
 runAnaTrigProof.C:65
 runAnaTrigProof.C:66
 runAnaTrigProof.C:67
 runAnaTrigProof.C:68
 runAnaTrigProof.C:69
 runAnaTrigProof.C:70
 runAnaTrigProof.C:71
 runAnaTrigProof.C:72
 runAnaTrigProof.C:73
 runAnaTrigProof.C:74
 runAnaTrigProof.C:75
 runAnaTrigProof.C:76
 runAnaTrigProof.C:77
 runAnaTrigProof.C:78
 runAnaTrigProof.C:79
 runAnaTrigProof.C:80
 runAnaTrigProof.C:81
 runAnaTrigProof.C:82
 runAnaTrigProof.C:83
 runAnaTrigProof.C:84
 runAnaTrigProof.C:85
 runAnaTrigProof.C:86
 runAnaTrigProof.C:87
 runAnaTrigProof.C:88
 runAnaTrigProof.C:89
 runAnaTrigProof.C:90
 runAnaTrigProof.C:91
 runAnaTrigProof.C:92
 runAnaTrigProof.C:93
 runAnaTrigProof.C:94
 runAnaTrigProof.C:95
 runAnaTrigProof.C:96
 runAnaTrigProof.C:97
 runAnaTrigProof.C:98
 runAnaTrigProof.C:99
 runAnaTrigProof.C:100
 runAnaTrigProof.C:101
 runAnaTrigProof.C:102
 runAnaTrigProof.C:103
 runAnaTrigProof.C:104
 runAnaTrigProof.C:105
 runAnaTrigProof.C:106
 runAnaTrigProof.C:107
 runAnaTrigProof.C:108
 runAnaTrigProof.C:109
 runAnaTrigProof.C:110
 runAnaTrigProof.C:111
 runAnaTrigProof.C:112
 runAnaTrigProof.C:113
 runAnaTrigProof.C:114
 runAnaTrigProof.C:115
 runAnaTrigProof.C:116
 runAnaTrigProof.C:117
 runAnaTrigProof.C:118
 runAnaTrigProof.C:119
 runAnaTrigProof.C:120
 runAnaTrigProof.C:121
 runAnaTrigProof.C:122
 runAnaTrigProof.C:123
 runAnaTrigProof.C:124
 runAnaTrigProof.C:125
 runAnaTrigProof.C:126
 runAnaTrigProof.C:127
 runAnaTrigProof.C:128
 runAnaTrigProof.C:129
 runAnaTrigProof.C:130
 runAnaTrigProof.C:131
 runAnaTrigProof.C:132
 runAnaTrigProof.C:133
 runAnaTrigProof.C:134
 runAnaTrigProof.C:135
 runAnaTrigProof.C:136
 runAnaTrigProof.C:137
 runAnaTrigProof.C:138
 runAnaTrigProof.C:139
 runAnaTrigProof.C:140
 runAnaTrigProof.C:141
 runAnaTrigProof.C:142
 runAnaTrigProof.C:143
 runAnaTrigProof.C:144
 runAnaTrigProof.C:145
 runAnaTrigProof.C:146
 runAnaTrigProof.C:147
 runAnaTrigProof.C:148
 runAnaTrigProof.C:149
 runAnaTrigProof.C:150
 runAnaTrigProof.C:151
 runAnaTrigProof.C:152
 runAnaTrigProof.C:153
 runAnaTrigProof.C:154
 runAnaTrigProof.C:155
 runAnaTrigProof.C:156
 runAnaTrigProof.C:157
 runAnaTrigProof.C:158
 runAnaTrigProof.C:159
 runAnaTrigProof.C:160
 runAnaTrigProof.C:161
 runAnaTrigProof.C:162
 runAnaTrigProof.C:163
 runAnaTrigProof.C:164
 runAnaTrigProof.C:165
 runAnaTrigProof.C:166
 runAnaTrigProof.C:167
 runAnaTrigProof.C:168
 runAnaTrigProof.C:169
 runAnaTrigProof.C:170
 runAnaTrigProof.C:171
 runAnaTrigProof.C:172
 runAnaTrigProof.C:173
 runAnaTrigProof.C:174
 runAnaTrigProof.C:175
 runAnaTrigProof.C:176
 runAnaTrigProof.C:177
 runAnaTrigProof.C:178
 runAnaTrigProof.C:179
 runAnaTrigProof.C:180
 runAnaTrigProof.C:181
 runAnaTrigProof.C:182
 runAnaTrigProof.C:183
 runAnaTrigProof.C:184
 runAnaTrigProof.C:185
 runAnaTrigProof.C:186
 runAnaTrigProof.C:187
 runAnaTrigProof.C:188
 runAnaTrigProof.C:189
 runAnaTrigProof.C:190
 runAnaTrigProof.C:191
 runAnaTrigProof.C:192