Jet and Particle identification tasks moved to different directories
[u/mrichter/AliRoot.git] / PWG4 / JetTasks / AliAnalysisHelperJetTasks.cxx
1
2 #include "TROOT.h"
3 #include "TList.h"
4 #include "AliMCEvent.h"
5 #include "AliStack.h"
6 #include "AliGenEventHeader.h"
7 #include "AliGenCocktailEventHeader.h"
8 #include "AliGenPythiaEventHeader.h"
9 #include <fstream>
10 #include <iostream>
11 #include "AliAnalysisHelperJetTasks.h"
12
13
14 ClassImp(AliAnalysisHelperJetTasks)
15
16
17
18  
19 AliGenPythiaEventHeader*  AliAnalysisHelperJetTasks::GetPythiaEventHeader(AliMCEvent *mcEvent){
20   
21   AliGenEventHeader* genHeader = mcEvent->GenEventHeader();
22   AliGenPythiaEventHeader* pythiaGenHeader = dynamic_cast<AliGenPythiaEventHeader*>(genHeader);
23   if(!pythiaGenHeader){
24     // cocktail ??
25     AliGenCocktailEventHeader* genCocktailHeader = dynamic_cast<AliGenCocktailEventHeader*>(genHeader);
26     
27     if (!genCocktailHeader) {
28       Printf("%s %d: Unknown header type (not Pythia or Cocktail)",(char*)__FILE__,__LINE__);
29       return 0;
30     }
31     TList* headerList = genCocktailHeader->GetHeaders();
32     for (Int_t i=0; i<headerList->GetEntries(); i++) {
33       pythiaGenHeader = dynamic_cast<AliGenPythiaEventHeader*>(headerList->At(i));
34       if (pythiaGenHeader)
35         break;
36     }
37     if(!pythiaGenHeader){
38       Printf("%s %d: PythiaHeader not found!",(char*)__FILE__,__LINE__);
39       return 0;
40     }
41   }
42   return pythiaGenHeader;
43
44 }
45
46
47 void AliAnalysisHelperJetTasks::PrintStack(AliMCEvent *mcEvent,Int_t iFirst,Int_t iLast,Int_t iMaxPrint){
48
49   AliStack *stack = mcEvent->Stack();
50   if(!stack){
51     Printf("%s%d No Stack available",(char*)__FILE__,__LINE__);
52     return;
53   }
54
55   static Int_t iCount = 0;
56   if(iCount>iMaxPrint)return;
57   Int_t nStack = stack->GetNtrack();
58   if(iLast == 0)iLast = nStack;
59   else if(iLast > nStack)iLast = nStack;
60
61
62   Printf("####################################################################");
63   for(Int_t np = iFirst;np<iLast;++np){
64     TParticle *p = stack->Particle(np);
65     Printf("Nr.%d --- Status %d ---- Mother1 %d Mother2 %d Daughter1 %d Daughter2 %d ",
66            np,p->GetStatusCode(),p->GetMother(0),p->GetMother(1),p->GetDaughter(0),p->GetDaughter(1));
67     Printf("Eta %3.3f Phi %3.3f ",p->Eta(),p->Phi()); 
68     p->Print();    
69     Printf("---------------------------------------");
70   }
71   iCount++;
72 }
73
74