// ARGUMENTS:
// 1. number of azymuthal sectors (it's better not to go under 8 or over 40)
// 2. the ROOT file to read (WITHOUT exstension)
// 3. event number
// 4. if specified a string, a fstream named like the argument is opened and
// the elapsed CPU time is stored (not useful)
// the macro will save a file named, for example "galice_<nsecs>.root"
// containing may AliITSneuralTrack objects
void AliITSNeuralTracking
(Int_t nsecs = 12, const char* rfile = "galice", Int_t event = 0, const char* save = 0)
{
TStopwatch timer;
Double_t CONVERT = TMath::Pi() / 180.0;
const char* wfile = Form("%s_%d.root", rfile, nsecs);
cout << "Reading file " << rfile << ".root and saving in " << wfile << endl;
// ==================================
// ==== CURVATURE CUT DEFINITION ====
// ==================================
// These values define the curvature cuts for all steps
// within a sector.
// For a greater clarity, the cuts are indicated in units
// of transverse momentum (GeV/c) but these value have no
// exact physical meaning, but are useful to understand
// well what means a choice in the value of a certain
// curvature constraint
// NOTE: becareful to make sure that the 'ncuts' variable
// have the same value of the dimension of the allocated arrays
Int_t ncuts;
Double_t *p, *cut;
ncuts = 5;
p = new Double_t[5];
cut = new Double_t[5];
p[0] = 2.0;
p[1] = 1.0;
p[2] = 0.7;
p[3] = 0.5;
p[4] = 0.3;
for (Int_t i = 0; i < ncuts; i++) cut[i] = 0.003 * 0.2 / p[i];
// ==========================
// ==== OTHER PARAMETERS ====
// ==========================
Bool_t flag = kFALSE; // for now, don't change this line, please...
Double_t diff = 0.02; // helicoidal cut
Double_t dtheta = 1.0; // delta-theta cut
Double_t temp = 1.0; // temperature parameter
Double_t var = 0.0001; // stabilization threshold
Double_t exp = 7.0; // straight-line excitator
Double_t gtoc = 3.0; // gain/cost contribution ratio
Double_t min = 0.4; // minimum in random activation initialization
Double_t max = 0.6; // maximum in random activation initialization
// =========================
// ==== NEURAL TRACKING ====
// =========================
AliITSneuralTracker *ANN = new AliITSneuralTracker(nsecs, ncuts, cut, CONVERT*dtheta);
TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject(Form("%s.root", rfile));
if (!file) file = new TFile(Form("%s.root", rfile),"UPDATE");
//Double_t Xv = -0.001097;
//Double_t Yv = -0.00347647;
//Double_t Zv = 0.000631345;
//ANN->SetVertex(Xv, Yv, Zv);
// You should find the vertex with VertexMacro.C
// and then put by hand the found values with
// the above method.
Int_t points = ANN->ReadFile(Form("%s.root", rfile), event);
ANN->SetTemperature(temp);
ANN->SetVariationLimit(var);
ANN->SetGainToCostRatio(gtoc);
ANN->SetExponent(exp);
ANN->SetInitLimits(min, max);
ANN->SetDiff(diff);
cout << points << " points found " << endl << endl;
TStopwatch timer;
timer.Start();
ANN->Go(wfile, flag);
timer.Stop();
cout << endl;
timer.Print();
if (save) {
fstream ksave(save, ios::app);
ksave << nsecs << " " << timer->CpuTime() << endl;
ksave.close();
}
// delete gAlice;
// gAlice = 0;
}
AliITSNeuralTracking.C:10 AliITSNeuralTracking.C:11 AliITSNeuralTracking.C:12 AliITSNeuralTracking.C:13 AliITSNeuralTracking.C:14 AliITSNeuralTracking.C:15 AliITSNeuralTracking.C:16 AliITSNeuralTracking.C:17 AliITSNeuralTracking.C:18 AliITSNeuralTracking.C:19 AliITSNeuralTracking.C:20 AliITSNeuralTracking.C:21 AliITSNeuralTracking.C:22 AliITSNeuralTracking.C:23 AliITSNeuralTracking.C:24 AliITSNeuralTracking.C:25 AliITSNeuralTracking.C:26 AliITSNeuralTracking.C:27 AliITSNeuralTracking.C:28 AliITSNeuralTracking.C:29 AliITSNeuralTracking.C:30 AliITSNeuralTracking.C:31 AliITSNeuralTracking.C:32 AliITSNeuralTracking.C:33 AliITSNeuralTracking.C:34 AliITSNeuralTracking.C:35 AliITSNeuralTracking.C:36 AliITSNeuralTracking.C:37 AliITSNeuralTracking.C:38 AliITSNeuralTracking.C:39 AliITSNeuralTracking.C:40 AliITSNeuralTracking.C:41 AliITSNeuralTracking.C:42 AliITSNeuralTracking.C:43 AliITSNeuralTracking.C:44 AliITSNeuralTracking.C:45 AliITSNeuralTracking.C:46 AliITSNeuralTracking.C:47 AliITSNeuralTracking.C:48 AliITSNeuralTracking.C:49 AliITSNeuralTracking.C:50 AliITSNeuralTracking.C:51 AliITSNeuralTracking.C:52 AliITSNeuralTracking.C:53 AliITSNeuralTracking.C:54 AliITSNeuralTracking.C:55 AliITSNeuralTracking.C:56 AliITSNeuralTracking.C:57 AliITSNeuralTracking.C:58 AliITSNeuralTracking.C:59 AliITSNeuralTracking.C:60 AliITSNeuralTracking.C:61 AliITSNeuralTracking.C:62 AliITSNeuralTracking.C:63 AliITSNeuralTracking.C:64 AliITSNeuralTracking.C:65 AliITSNeuralTracking.C:66 AliITSNeuralTracking.C:67 AliITSNeuralTracking.C:68 AliITSNeuralTracking.C:69 AliITSNeuralTracking.C:70 AliITSNeuralTracking.C:71 AliITSNeuralTracking.C:72 AliITSNeuralTracking.C:73 AliITSNeuralTracking.C:74 AliITSNeuralTracking.C:75 AliITSNeuralTracking.C:76 AliITSNeuralTracking.C:77 AliITSNeuralTracking.C:78 AliITSNeuralTracking.C:79 AliITSNeuralTracking.C:80 AliITSNeuralTracking.C:81 AliITSNeuralTracking.C:82 AliITSNeuralTracking.C:83 AliITSNeuralTracking.C:84 AliITSNeuralTracking.C:85 AliITSNeuralTracking.C:86 AliITSNeuralTracking.C:87 AliITSNeuralTracking.C:88 AliITSNeuralTracking.C:89 AliITSNeuralTracking.C:90 AliITSNeuralTracking.C:91 AliITSNeuralTracking.C:92 AliITSNeuralTracking.C:93 AliITSNeuralTracking.C:94 AliITSNeuralTracking.C:95 AliITSNeuralTracking.C:96 AliITSNeuralTracking.C:97 AliITSNeuralTracking.C:98 AliITSNeuralTracking.C:99 AliITSNeuralTracking.C:100 AliITSNeuralTracking.C:101 AliITSNeuralTracking.C:102 AliITSNeuralTracking.C:103 AliITSNeuralTracking.C:104 AliITSNeuralTracking.C:105 AliITSNeuralTracking.C:106 AliITSNeuralTracking.C:107 AliITSNeuralTracking.C:108 AliITSNeuralTracking.C:109 AliITSNeuralTracking.C:110 AliITSNeuralTracking.C:111 AliITSNeuralTracking.C:112