]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGUD/multVScentPbPb/runAAFMulti.C
fix AliHLTGlobalEsdConverterComponent
[u/mrichter/AliRoot.git] / PWGUD / multVScentPbPb / runAAFMulti.C
1 //
2 void runAAFMulti(TString dataset="/alice/sim/LHC10h8_000137161", //"/alice/sim/LHC10h6_000137161",
3                  TString outFName = "trbg.root",
4                  Int_t   nEvents    = -1,//3000,
5                  Float_t etaMin     =-0.5,        // min eta range to fill in histos
6                  Float_t etaMax     = 0.5,        // max eta range to fill in histos
7                  Float_t zMin       = -7,         // process events with Z vertex min
8                  Float_t zMax       =  7,         //                     max positions
9                  Int_t   useCentVar = 0,          // centrality variable to use: enum {kCentSPD2, kCentV0,  kCentV0CR, kCentTrTPC}
10                  Float_t scaleMCV0  = 0.8,     // rescale MC V0 to match data
11                  //
12                  //
13                  Float_t cutSigNStd  = 1.5,       // cut on weighed distance used to extract signal
14                  Float_t cutSigDPhiS = -1,        // cut on dPhi-phiBent used to extract signal (if negative -> dphi*sqrt(cutSigNStd)
15                  Bool_t  useMC  = kTRUE,          // fill MC info (doRec=kTRUE)
16                  //
17                  Bool_t doRec  = kTRUE,//kTRUE,           // fill data histos from new reco
18                  Bool_t doInj  = kTRUE,//kTRUE,           // create Inj. bg
19                  Bool_t doRot  = kFALSE,          // create Rot. bg
20                  Bool_t doMix  = kFALSE,//kTRUE,  // create Mix. bg
21                  // 
22                  // specific parameters for reconstruction
23                  float  phiRot      = 3.14159e+00, // angle for bg. generation with rotation
24                  float  injScale    = 1.,//0.7,    // inject injScale*Ncl(Lr1/Lr2) hits
25                  Bool_t scaleDTheta = kTRUE,       // scale dTheta by 1/sin^2(theta) in trackleting
26                  float  nStdDev     = 25.,         // number of st.dev. for tracklet cut to keep
27                  float  dphi        = 0.06,        // dphi window (sigma of tracklet cut)
28                  float  dtht        = 0.025,       // dtheta .... (if negative, abs will be used with additional cut on |dthetaX|, apart from w.distance
29                  float  phishift    = 0.0045,      // bending shift
30                  Bool_t remOvl      = kTRUE,       
31                  float  ovlPhiCut   = 0.005, 
32                  float  ovlZetaCut  = 0.05,
33                  Int_t  nEventsSkip = 0,
34                  //----------------------- Ntracklets selection parameters important for mixing, to be tuned
35                  Float_t ntMin      =   1,         // process events with ESDmult 
36                  Float_t ntMax      = 20000,       // within this range
37                  Float_t ntMixBinSz = 20000,       // ESDMult bin size for mixing
38                  //----------------------- Zv selection parameters important for mixing, to be tuned
39                  Float_t zMixBinSz  =  14,       //0.1,  // Zv. bin for mixing
40                  //---------------------------------------------------------------------------------
41                  //
42                  Bool_t checkReconstructables = kFALSE,//kTRUE, // fill histos for reconstructable (needs useMC and doRec) 
43                  //
44                  TString alirootVer = "VO_ALICE@AliRoot::v5-03-24-AN",
45                  TString rootVer    = "VO_ALICE@ROOT::v5-33-02b",
46                  //
47                  //TString proofCluster="shahoian@skaf.saske.sk"
48                  TString proofCluster="shahoian@alice-caf.cern.ch"
49                  ) 
50
51   //  
52   Bool_t runLocal = kFALSE;//kTRUE; // true only for local test mode
53   if (runLocal) {
54     //    dataset = "/default/shahoian/test_pp";//"/default/shahoian/test";
55     dataset = "default/shahoian/test137366";
56     proofCluster = "";
57     alirootVer = "$ALICE_ROOT/ANALYSIS/macros/AliRootProofLite";
58     gSystem->ExpandPathName(alirootVer);
59     nEvents = 500;
60   }
61   //
62   if ((!dataset.Contains("alice/sim")) && useMC) {
63     printf("Running with read data dataset, switching OFF useMC\n");
64     useMC = kFALSE;
65   }
66   //
67   printf("Requested: %s %s\n",alirootVer.Data(), rootVer.Data());
68   printf("Output expected in %s\n",outFName.Data());
69   //
70   gEnv->SetValue("XSec.GSI.DelegProxy","2");
71   //
72   TString alirootMode="REC";
73   TString extraLibs = "ITSrec:CDB:Geom:"; // not needed in default aliroot mode
74   //extraLibs+= "ANALYSIS:ANALYSISalice";
75   extraLibs+= "ANALYSIS:OADB:ANALYSISalice:EventMixing";
76   TList *list = new TList();
77   // sets $ALIROOT_MODE on each worker to let proof to know to run in special mode
78   list->Add(new TNamed("ALIROOT_MODE"      , alirootMode.Data()));
79   list->Add(new TNamed("ALIROOT_EXTRA_LIBS", extraLibs.Data()));
80   list->Add(new TNamed("ALIROOT_EXTRA_INCLUDES", "ITS:include"));
81   if (doRec || doInj || doRot || doMix) list->Add(new TNamed("ALIROOT_ENABLE_ALIEN","1"));
82   //
83   //REM: same version of AliRoot on client!!!!! Otherwise error!! 
84   TProof::Mgr(proofCluster.Data())->SetROOTVersion(rootVer.Data());
85   TProof::Open(proofCluster.Data());//,"workers=10x");
86   //  TProof::Open(proofCluster.Data(),"workers=1x");
87   if (!gProof) {
88     Error("runAAFMulti.C","Connection to AF failed.");
89     return;
90   }
91   //  gProof->Exec("TObject *o = gEnv->GetTable()->FindObject(\"Proof.UseMergers\");"
92   //           "gEnv->GetTable()->Remove(o);", kTRUE);
93   gProof->SetParameter("PROOF_UseMergers", 0);
94   // Lets enable aliroot + extra libs on proof cluster
95   if (runLocal) gProof->UploadPackage(alirootVer.Data());
96   gProof->EnablePackage(alirootVer.Data(), list);
97   //  gProof->EnablePackage(alirootVer.Data());
98   //
99   if (runLocal) {
100     Int_t numWorkers = gProof->GetParallel();
101     if (numWorkers<1) {printf("No workers\n"); return;}
102     gProof->SetParameter("PROOF_PacketizerStrategy", (Int_t)0);
103     int frac = (Int_t) 5 / numWorkers;
104     if (frac<1) frac = 1;
105     gProof->SetParameter("PROOF_PacketAsAFraction", frac);
106   }
107   //
108   gROOT->LoadMacro("MyAnalysisMacroTrackletMulti.C");
109   TStopwatch sw;
110   sw.Start();
111   MyAnalysisMacroTrackletMulti(dataset,outFName,nEvents,etaMin,etaMax,zMin,zMax,useCentVar,
112                                cutSigNStd,cutSigDPhiS,useMC,scaleMCV0,
113                                doRec,doInj,doRot,doMix,
114                                phiRot,injScale,scaleDTheta,nStdDev,dphi,dtht,
115                                phishift,remOvl,ovlPhiCut,ovlZetaCut,nEventsSkip,
116                                ntMin,ntMax,ntMixBinSz,zMixBinSz,
117                                checkReconstructables);
118   //
119   sw.Stop();
120   sw.Print();
121 }