Cosmetics
[u/mrichter/AliRoot.git] / ANALYSIS / WriteAOD.C
1 #if 0
2   #include "$(ALICE_ROOT)/TPC/alles.h"
3   #include "AliReader.h"
4   #include "AliReaderKineTree.h"
5   #include "AliAODParticleCut.h"
6   #include "AliAOD.h"
7   #include "AliAODPairCut.h"
8   #include "TSystem.h"
9   #include "TObjString.h"
10   #include "TString.h"
11   #include "AliPDG.h"
12 #endif
13
14
15 void WriteAOD(Option_t* datatype, Int_t first = -1,Int_t last = -1,
16                 Option_t* processopt="TracksAndParticles",
17                 char *outfile = "AOD.root")
18  {
19 //datatype defines type of data to be read
20 //  Kine  - analyzes Kine Tree: simulated particles
21 //  ESD
22 //  AOD
23
24 // default: TracksAndParticles - process both recontructed tracks and sim. particles corresponding to them 
25 //          Tracks - process only recontructed tracks
26 //          Particles - process only simulated particles
27
28 //Reads data from diroctories from first to last(including)
29 // For examples if first=3 and last=5 it reads from
30 //  ./3/
31 //  ./4/
32 //  ./5/
33 //if first or last is negative (or both), it reads from current directory
34 //
35 //these names I use when analysis is done directly from CASTOR files via RFIO
36
37   Bool_t multcheck = kTRUE;
38
39   const char* basedir=".";
40   const char* serie="";
41   const char* field = "";
42   cout<<"WriteAOD.C: datatype is "<<datatype<<" dir is basedir"<<endl;
43   // Dynamically link some shared libs                    
44   
45   cout<<"WriteAOD.C: Loading  ANALYSIS .....\n";
46   gSystem->Load("$(ALICE_ROOT)/lib/tgt_$(ALICE_TARGET)/libANALYSIS");
47   cout<<"WriteAOD.C: ..... Loaded\n";
48   
49   Int_t PID[11];
50   PID[0]=kProton;
51   PID[1]=kProtonBar;
52   PID[2]=kKPlus;
53   PID[3]=kKMinus;
54   PID[4]=kPiPlus;
55   PID[5]=kPiMinus;
56   PID[6]=kElectron;
57   PID[7]=kPositron;
58   PID[8]=kMuonMinus;
59   PID[9]=kMuonPlus;
60   PID[10]=0;//Last must be 0!!!!!!!!!!!!!!!!!!
61   
62   Float_t PIDprob[11];
63   PIDprob[0] = 0.5;
64   PIDprob[1] = 0.5;
65   PIDprob[2] = 0.5;
66   PIDprob[3] = 0.5;
67   PIDprob[4] = 0.5;
68   PIDprob[5] = 0.5;
69   PIDprob[6] = 0.5;
70   PIDprob[7] = 0.5;
71   PIDprob[8] = 0.5;
72   PIDprob[9] = 0.5;
73   PIDprob[10] = 0.5;
74   /***********************************************************/
75    
76   AliReader* reader;
77   Int_t kine = strcmp(datatype,"Kine");
78   Int_t ESD = strcmp(datatype,"ESD");
79   Int_t intern = strcmp(datatype,"AOD");
80
81   if(!kine)
82    {
83     reader = new AliReaderKineTree();
84     processopt="Particles"; //this reader by definition reads only simulated particles
85     multcheck = kFALSE;
86    }
87   else if(!ESD)
88    {
89     AliReaderESD* esdreader = new AliReaderESD();
90     esdreader->ReadSimulatedData(kTRUE);
91     esdreader->SetNumberOfTrackPoints(5,30.);//5 points every 30 cm
92     esdreader->SetITSTrackPoints(kTRUE);
93     esdreader->SetClusterMap(kTRUE);
94     
95     reader = esdreader;
96     multcheck = kTRUE;
97    }
98
99   else if(!intern)
100    {
101     reader = new AliHBTReaderAOD("AOD.root");
102     multcheck = kTRUE;
103    }
104   else
105    {
106     cerr<<"Option "<<datatype<<"  not recognized. Exiting"<<endl;
107     return;
108    }
109
110   TObjArray* dirs=0;
111   if ( (first >= 0) && (last>=0) && ( (last-first)>=0 ) )
112    {//read from many dirs dirs
113      cout<<"WriteAOD.C: ..... Setting dirs first="<<first<<" last="<<last<<"\n";
114      char buff[50];
115      dirs = new TObjArray(last-first+1);
116      dirs->SetOwner();
117      for (Int_t i = first; i<=last; i++)
118       { 
119         sprintf(buff,"%s/%s/%s/%d",basedir,field,serie,i);
120         TObjString *odir= new TObjString(buff);
121         dirs->Add(odir);
122       }
123     }
124
125   reader->SetDirs(dirs);
126
127   AliAODParticleCut* readerpartcut= new AliAODParticleCut();
128
129   Int_t l = 0;
130   while (PID[l] != 0)
131    {
132      cout<<"WriteAOD.C: Adding PID  = "<<PID[l]<<" l = "<<l<<endl;
133      readerpartcut->SetPID(PID[l]);
134      AliAODParticleCut * pcut = (AliAODParticleCut*)readerpartcut->Clone();
135      AliAODPIDCut* pidcut = new AliAODPIDCut(PID[l],PIDprob[l]);
136      pcut->AddBasePartCut(pidcut);
137      reader->AddParticleCut(pcut);//read this particle type with this cut
138      delete pcut;
139      l++;
140    }
141   
142 //   readerpartcut->SetPtRange(0.0,1.2);
143
144    cout<<"WriteAOD.C:   P R O C S E S S I N G .....\n\n";
145    AliReaderAOD::WriteAOD(reader,outfile,"AliAODParticle",multcheck);
146    cout<<"\n\nWriteAOD.C:   F I N I S H E D\n";
147    
148    if (dirs) delete dirs;
149    delete reader;
150  }
151