ROOT logo
#include "TTree.h"
#include "TObjArray.h"
#include "TObjString.h"
#include "TString.h"
#include "TGrid.h"
#include "TLeaf.h"
#include "TError.h"
#include "TFile.h"

void DisableBranches(TTree* tree)
{
  TObjArray* list = tree->GetListOfLeaves();
  TIter next(list);
  TLeaf* leaf;
  
  TObjArray branchesToKeep;
  branchesToKeep.SetOwner(kTRUE);
  
  branchesToKeep.Add(new TObjString("rawevent"));
  branchesToKeep.Add(new TObjString("MUON"));
  branchesToKeep.Add(new TObjString("Common"));
  branchesToKeep.Add(new TObjString("TRG"));
  branchesToKeep.Add(new TObjString("T0"));
  branchesToKeep.Add(new TObjString("VZERO"));
  branchesToKeep.Add(new TObjString("ZDC"));
  branchesToKeep.Add(new TObjString("ITSSPD"));
  
  TIter nit(&branchesToKeep);

  tree->SetBranchStatus("*",0);

  Bool_t on(kTRUE);

  while ( ( leaf = static_cast<TLeaf*>(next()) ) )
  {
    TString name(leaf->GetName());
    if (!name.BeginsWith("f") && name != "rawevent" )
    {
      TObjString* str;
      
      nit.Reset();
      
      on = kFALSE;
      
      while ( ( str = static_cast<TObjString*>(nit()) ) )
      {
        if ( name.BeginsWith(str->String()) )
        {
          on = kTRUE;
        }
      }
    }
    if ( on )
    {
      leaf->GetBranch()->SetStatus(1);
    }
  }
}

int FILTER_RAWMUON(const char* from, const char* to)
{
  TString sinputfile(from);
  
  if (sinputfile.BeginsWith("alien://"))
  {
    if (!gGrid)
    {
      TGrid::Connect("alien://");
    }
    if (!gGrid)
    {
      Error("FILTER_RAWMUON","Cannot connect to Grid !");
      return -1;
    }
  }
  
  TFile* rawFile = TFile::Open(from);
  
  TTree *rawTree=(TTree *)rawFile->Get("RAW");
  if(!rawTree)
  {
    Error("FILTER_RAWMUON","Error getting RAW tree from file %s",from);
    return -2;
  }
  
  TString snewfile(to);
  
  DisableBranches(rawTree);
  
  TFile* newfile =  new TFile(snewfile.Data(),"recreate");
  
  TTree* newTree = rawTree->CloneTree();
  
  newTree->Print();
  
  newTree->AutoSave();
  
  newfile->Close();
  
  delete newfile;

  delete rawFile;
  
  return 0;
 FILTER_RAWMUON.C:1
 FILTER_RAWMUON.C:2
 FILTER_RAWMUON.C:3
 FILTER_RAWMUON.C:4
 FILTER_RAWMUON.C:5
 FILTER_RAWMUON.C:6
 FILTER_RAWMUON.C:7
 FILTER_RAWMUON.C:8
 FILTER_RAWMUON.C:9
 FILTER_RAWMUON.C:10
 FILTER_RAWMUON.C:11
 FILTER_RAWMUON.C:12
 FILTER_RAWMUON.C:13
 FILTER_RAWMUON.C:14
 FILTER_RAWMUON.C:15
 FILTER_RAWMUON.C:16
 FILTER_RAWMUON.C:17
 FILTER_RAWMUON.C:18
 FILTER_RAWMUON.C:19
 FILTER_RAWMUON.C:20
 FILTER_RAWMUON.C:21
 FILTER_RAWMUON.C:22
 FILTER_RAWMUON.C:23
 FILTER_RAWMUON.C:24
 FILTER_RAWMUON.C:25
 FILTER_RAWMUON.C:26
 FILTER_RAWMUON.C:27
 FILTER_RAWMUON.C:28
 FILTER_RAWMUON.C:29
 FILTER_RAWMUON.C:30
 FILTER_RAWMUON.C:31
 FILTER_RAWMUON.C:32
 FILTER_RAWMUON.C:33
 FILTER_RAWMUON.C:34
 FILTER_RAWMUON.C:35
 FILTER_RAWMUON.C:36
 FILTER_RAWMUON.C:37
 FILTER_RAWMUON.C:38
 FILTER_RAWMUON.C:39
 FILTER_RAWMUON.C:40
 FILTER_RAWMUON.C:41
 FILTER_RAWMUON.C:42
 FILTER_RAWMUON.C:43
 FILTER_RAWMUON.C:44
 FILTER_RAWMUON.C:45
 FILTER_RAWMUON.C:46
 FILTER_RAWMUON.C:47
 FILTER_RAWMUON.C:48
 FILTER_RAWMUON.C:49
 FILTER_RAWMUON.C:50
 FILTER_RAWMUON.C:51
 FILTER_RAWMUON.C:52
 FILTER_RAWMUON.C:53
 FILTER_RAWMUON.C:54
 FILTER_RAWMUON.C:55
 FILTER_RAWMUON.C:56
 FILTER_RAWMUON.C:57
 FILTER_RAWMUON.C:58
 FILTER_RAWMUON.C:59
 FILTER_RAWMUON.C:60
 FILTER_RAWMUON.C:61
 FILTER_RAWMUON.C:62
 FILTER_RAWMUON.C:63
 FILTER_RAWMUON.C:64
 FILTER_RAWMUON.C:65
 FILTER_RAWMUON.C:66
 FILTER_RAWMUON.C:67
 FILTER_RAWMUON.C:68
 FILTER_RAWMUON.C:69
 FILTER_RAWMUON.C:70
 FILTER_RAWMUON.C:71
 FILTER_RAWMUON.C:72
 FILTER_RAWMUON.C:73
 FILTER_RAWMUON.C:74
 FILTER_RAWMUON.C:75
 FILTER_RAWMUON.C:76
 FILTER_RAWMUON.C:77
 FILTER_RAWMUON.C:78
 FILTER_RAWMUON.C:79
 FILTER_RAWMUON.C:80
 FILTER_RAWMUON.C:81
 FILTER_RAWMUON.C:82
 FILTER_RAWMUON.C:83
 FILTER_RAWMUON.C:84
 FILTER_RAWMUON.C:85
 FILTER_RAWMUON.C:86
 FILTER_RAWMUON.C:87
 FILTER_RAWMUON.C:88
 FILTER_RAWMUON.C:89
 FILTER_RAWMUON.C:90
 FILTER_RAWMUON.C:91
 FILTER_RAWMUON.C:92
 FILTER_RAWMUON.C:93
 FILTER_RAWMUON.C:94
 FILTER_RAWMUON.C:95
 FILTER_RAWMUON.C:96
 FILTER_RAWMUON.C:97
 FILTER_RAWMUON.C:98
 FILTER_RAWMUON.C:99
 FILTER_RAWMUON.C:100
 FILTER_RAWMUON.C:101
 FILTER_RAWMUON.C:102
 FILTER_RAWMUON.C:103
 FILTER_RAWMUON.C:104
 FILTER_RAWMUON.C:105