ROOT logo
//
void runAAFSPDTask(TString dataset="/alice/sim/LHC11d2_000119161",
		   TString outFName = "spdres.root",
		   Int_t   nEvents    = -1,//3000,
		   Float_t etaMin     =-1.5,        // min eta range to fill in histos
		   Float_t etaMax     = 1.5,        // max eta range to fill in histos
		   Float_t zMin       = -5,         // process events with Z vertex min
		   Float_t zMax       =  5,         //                     max positions
		   //
		   Float_t cutSigNStd  = 1.,       // cut on weighed distance used to extract signal
		   Float_t cutSigDPhiS = -1,        // cut on dPhi-phiBent used to extract signal (if negative -> dphi*sqrt(cutSigNStd)
		   Bool_t  useMC  = kTRUE,          // fill MC info (doRec=kTRUE)
		   //
		   // specific parameters for reconstruction
		   float  phiRot      = 3.14159e+00, // angle for bg. generation with rotation
		   Bool_t scaleDTheta = kTRUE,       // scale dTheta by 1/sin^2(theta) in trackleting
		   float  nStdDev     = 1.,         // number of st.dev. for tracklet cut to keep
		   float  dphi        = 0.06,        // dphi window (sigma of tracklet cut)
		   float  dtht        = 0.025,       // dtheta .... (if negative, abs will be used with additional cut on |dthetaX|, apart from w.distance
		   float  phishift    = 0.0045,      // bending shift
		   Bool_t remOvl      = kTRUE,       
		   float  ovlPhiCut   = 0.005, 
		   float  ovlZetaCut  = 0.05,
		   Int_t  nEventsSkip = 0,
		   //
		   TString alirootVer = "VO_ALICE@AliRoot::v5-03-15-AN",
		   TString rootVer    = "VO_ALICE@ROOT::v5-33-02a",
		   //
		   TString proofCluster="cheshkov@alice-caf.cern.ch"
		   ) 
{ 
  //  
  Bool_t runLocal = kFALSE;//kTRUE; // true only for local test mode
  if (runLocal) {
    //    dataset = "/default/shahoian/test_pp";//"/default/shahoian/test";
    dataset = "default/shahoian/test_sim_lhc11b1a";
    proofCluster = "";
    alirootVer = "AliRootProofLite";
    nEvents = 500;
  }
  //
  if ((!dataset.Contains("sim")) && useMC) {
    printf("Running with read data dataset, switching OFF useMC\n");
    useMC = kFALSE;
  }
  //
  printf("Requested: %s %s\n",alirootVer.Data(), rootVer.Data());
  printf("Output expected in %s\n",outFName.Data());
  //
  gEnv->SetValue("XSec.GSI.DelegProxy","2");
  //
  TString alirootMode="REC";//"REC";
  TString extraLibs = "ITSrec:CDB:Geom:"; // not needed in default aliroot mode
  //extraLibs+= "ANALYSIS:ANALYSISalice";
  extraLibs+= "ANALYSIS:OADB:ANALYSISalice:EventMixing";
  TList *list = new TList();
  // sets $ALIROOT_MODE on each worker to let proof to know to run in special mode
  list->Add(new TNamed("ALIROOT_MODE"      , alirootMode.Data()));
  list->Add(new TNamed("ALIROOT_EXTRA_LIBS", extraLibs.Data()));
  list->Add(new TNamed("ALIROOT_EXTRA_INCLUDES", "ITS:include"));
  list->Add(new TNamed("ALIROOT_ENABLE_ALIEN","1"));
  //
  //REM: same version of AliRoot on client!!!!! Otherwise error!! 
  TProof::Mgr(proofCluster.Data())->SetROOTVersion(rootVer.Data());
  //  TProof::Open(proofCluster.Data());//,"workers=10x");
  TProof::Open(proofCluster.Data(),"workers=1x");
  if (!gProof) {
    Error("runAAFMulti.C","Connection to AF failed.");
    return;
  }
  //  gProof->Exec("TObject *o = gEnv->GetTable()->FindObject(\"Proof.UseMergers\");"
  //	       "gEnv->GetTable()->Remove(o);", kTRUE);
  gProof->SetParameter("PROOF_UseMergers", 0);
  // Lets enable aliroot + extra libs on proof cluster
  if (runLocal) gProof->UploadPackage(alirootVer.Data());
  gProof->EnablePackage(alirootVer.Data(), list);
  //  gProof->EnablePackage(alirootVer.Data());
  //
  if (runLocal) {
    Int_t numWorkers = gProof->GetParallel();
    if (numWorkers<1) {printf("No workers\n"); return;}
    gProof->SetParameter("PROOF_PacketizerStrategy", (Int_t)0);
    int frac = (Int_t) 5 / numWorkers;
    if (frac<1) frac = 1;
    gProof->SetParameter("PROOF_PacketAsAFraction", frac);
  }
  //
  gROOT->LoadMacro(Form("%s/AnalysisSPDClustTask.C",gSystem->pwd()));
  TStopwatch sw;
  sw.Start();
  AnalysisSPDClustTask(dataset,outFName,nEvents,etaMin,etaMax,zMin,zMax,
		       cutSigNStd,cutSigDPhiS,useMC,
		       scaleDTheta,nStdDev,dphi,dtht,
		       phishift,remOvl,ovlPhiCut,ovlZetaCut,nEventsSkip);
  //
  sw.Stop();
  sw.Print();
}
 runAAFSPDTask.C:1
 runAAFSPDTask.C:2
 runAAFSPDTask.C:3
 runAAFSPDTask.C:4
 runAAFSPDTask.C:5
 runAAFSPDTask.C:6
 runAAFSPDTask.C:7
 runAAFSPDTask.C:8
 runAAFSPDTask.C:9
 runAAFSPDTask.C:10
 runAAFSPDTask.C:11
 runAAFSPDTask.C:12
 runAAFSPDTask.C:13
 runAAFSPDTask.C:14
 runAAFSPDTask.C:15
 runAAFSPDTask.C:16
 runAAFSPDTask.C:17
 runAAFSPDTask.C:18
 runAAFSPDTask.C:19
 runAAFSPDTask.C:20
 runAAFSPDTask.C:21
 runAAFSPDTask.C:22
 runAAFSPDTask.C:23
 runAAFSPDTask.C:24
 runAAFSPDTask.C:25
 runAAFSPDTask.C:26
 runAAFSPDTask.C:27
 runAAFSPDTask.C:28
 runAAFSPDTask.C:29
 runAAFSPDTask.C:30
 runAAFSPDTask.C:31
 runAAFSPDTask.C:32
 runAAFSPDTask.C:33
 runAAFSPDTask.C:34
 runAAFSPDTask.C:35
 runAAFSPDTask.C:36
 runAAFSPDTask.C:37
 runAAFSPDTask.C:38
 runAAFSPDTask.C:39
 runAAFSPDTask.C:40
 runAAFSPDTask.C:41
 runAAFSPDTask.C:42
 runAAFSPDTask.C:43
 runAAFSPDTask.C:44
 runAAFSPDTask.C:45
 runAAFSPDTask.C:46
 runAAFSPDTask.C:47
 runAAFSPDTask.C:48
 runAAFSPDTask.C:49
 runAAFSPDTask.C:50
 runAAFSPDTask.C:51
 runAAFSPDTask.C:52
 runAAFSPDTask.C:53
 runAAFSPDTask.C:54
 runAAFSPDTask.C:55
 runAAFSPDTask.C:56
 runAAFSPDTask.C:57
 runAAFSPDTask.C:58
 runAAFSPDTask.C:59
 runAAFSPDTask.C:60
 runAAFSPDTask.C:61
 runAAFSPDTask.C:62
 runAAFSPDTask.C:63
 runAAFSPDTask.C:64
 runAAFSPDTask.C:65
 runAAFSPDTask.C:66
 runAAFSPDTask.C:67
 runAAFSPDTask.C:68
 runAAFSPDTask.C:69
 runAAFSPDTask.C:70
 runAAFSPDTask.C:71
 runAAFSPDTask.C:72
 runAAFSPDTask.C:73
 runAAFSPDTask.C:74
 runAAFSPDTask.C:75
 runAAFSPDTask.C:76
 runAAFSPDTask.C:77
 runAAFSPDTask.C:78
 runAAFSPDTask.C:79
 runAAFSPDTask.C:80
 runAAFSPDTask.C:81
 runAAFSPDTask.C:82
 runAAFSPDTask.C:83
 runAAFSPDTask.C:84
 runAAFSPDTask.C:85
 runAAFSPDTask.C:86
 runAAFSPDTask.C:87
 runAAFSPDTask.C:88
 runAAFSPDTask.C:89
 runAAFSPDTask.C:90
 runAAFSPDTask.C:91
 runAAFSPDTask.C:92
 runAAFSPDTask.C:93
 runAAFSPDTask.C:94
 runAAFSPDTask.C:95
 runAAFSPDTask.C:96
 runAAFSPDTask.C:97
 runAAFSPDTask.C:98
 runAAFSPDTask.C:99