ROOT logo
// Label is used to store scanning result for tracks and trackelts.
//
// BIT(1) stores the original selection.
// BIT(0) stores the user selection (set to same value as b1 at init).
//
// This allows to check all possible combinations.

struct XXX
{
  const char   *bname;
  const char   *oname;
  TBranch      *branch;
  AliESDVertex *vert;
};

XXX vvv[3] = {
  { "VT",   "PrimVertTracks" },
  { "VTPC", "PrimVertTPC" },
  { "VSPD", "PrimVertSPD" }
};

void make_scan_results()
{
  TFile *f = TFile::Open("scan_results.root", "UPDATE");

  f->Delete("SR;*");

  T = new TTree("SR", "Scanning results");

  TClonesArray* ts = new TClonesArray("AliESDtrack", 32);
  TBranch * tb = T->Branch("T", &ts);
  delete ts;

  AliMultiplicity *ms = 0;
  TBranch *mb = T->Branch("M", &ms);

  for (Int_t v = 0; v < 3; ++v)
  {
    vvv[v].vert   = 0;
    vvv[v].branch = T->Branch(vvv[v].bname, &vvv[v].vert);
  }

  for (Int_t i=0; i<=9999; ++i)
  {
    TString name;

    name.Form("Tracks_%04d", i);
    ts = (TClonesArray*) f->Get(name);
    if (ts == 0)
      continue;

    name.Form("Tracklets_%04d", i);
    ms = (AliMultiplicity*) f->Get(name);
    if (ms == 0)
      Error("make_scan_results", "'%s' not found.", name.Data());

    tb->SetAddress(&ts);
    mb->SetAddress(&ms);

    for (Int_t v = 0; v < 3; ++v)
    {
      name.Form("%s_%04d", vvv[v].oname, i);
      vvv[v].vert = (AliESDVertex*) f->Get(name);
      if (vvv[v].vert == 0)
        Error("make_scan_results", "'%s' not found.", name.Data());
      vvv[v].branch->SetAddress(&vvv[v].vert);
    }

    T->Fill();

    delete ts;
    delete ms;
    for (Int_t v = 0; v < 3; ++v) delete vvv[v].vert;
  }

  T->Write();

  f->Close();
  delete f;
}
 make_scan_results.C:1
 make_scan_results.C:2
 make_scan_results.C:3
 make_scan_results.C:4
 make_scan_results.C:5
 make_scan_results.C:6
 make_scan_results.C:7
 make_scan_results.C:8
 make_scan_results.C:9
 make_scan_results.C:10
 make_scan_results.C:11
 make_scan_results.C:12
 make_scan_results.C:13
 make_scan_results.C:14
 make_scan_results.C:15
 make_scan_results.C:16
 make_scan_results.C:17
 make_scan_results.C:18
 make_scan_results.C:19
 make_scan_results.C:20
 make_scan_results.C:21
 make_scan_results.C:22
 make_scan_results.C:23
 make_scan_results.C:24
 make_scan_results.C:25
 make_scan_results.C:26
 make_scan_results.C:27
 make_scan_results.C:28
 make_scan_results.C:29
 make_scan_results.C:30
 make_scan_results.C:31
 make_scan_results.C:32
 make_scan_results.C:33
 make_scan_results.C:34
 make_scan_results.C:35
 make_scan_results.C:36
 make_scan_results.C:37
 make_scan_results.C:38
 make_scan_results.C:39
 make_scan_results.C:40
 make_scan_results.C:41
 make_scan_results.C:42
 make_scan_results.C:43
 make_scan_results.C:44
 make_scan_results.C:45
 make_scan_results.C:46
 make_scan_results.C:47
 make_scan_results.C:48
 make_scan_results.C:49
 make_scan_results.C:50
 make_scan_results.C:51
 make_scan_results.C:52
 make_scan_results.C:53
 make_scan_results.C:54
 make_scan_results.C:55
 make_scan_results.C:56
 make_scan_results.C:57
 make_scan_results.C:58
 make_scan_results.C:59
 make_scan_results.C:60
 make_scan_results.C:61
 make_scan_results.C:62
 make_scan_results.C:63
 make_scan_results.C:64
 make_scan_results.C:65
 make_scan_results.C:66
 make_scan_results.C:67
 make_scan_results.C:68
 make_scan_results.C:69
 make_scan_results.C:70
 make_scan_results.C:71
 make_scan_results.C:72
 make_scan_results.C:73
 make_scan_results.C:74
 make_scan_results.C:75
 make_scan_results.C:76
 make_scan_results.C:77
 make_scan_results.C:78
 make_scan_results.C:79
 make_scan_results.C:80
 make_scan_results.C:81