13 #include <TStopwatch.h>
14 #include <TObjArray.h>
15 #include <TObjString.h>
17 #include <TStopwatch.h>
19 #include <AliRunLoader.h>
20 #include <AliHeader.h>
21 #include <AliGenPythiaEventHeader.h>
22 #include <AliJetParticle.h>
23 #include <AliJetParticlesReader.h>
24 #include <AliJetParticlesReaderKine.h>
25 #include <AliJetParticlesReaderESD.h>
26 #include <AliJetParticlesReaderHLT.h>
27 #include <AliJetEventParticles.h>
28 #include <AliTkConeJetEvent.h>
29 #include <AliTkConeJetFinderV2.h>
32 void findJetsMixed(Char_t *fname,Char_t *hname,Float_t ptcut=2.0,Float_t radius=0.3,Char_t *savename=0,Int_t nMaxEvents=-1)
35 TChain *theTree = new TChain("AJEPtree");
37 AliJetEventParticles *ev=new AliJetEventParticles();
38 theTree->SetBranchAddress("particles",&ev);
40 Int_t treeentries=(Int_t)theTree->GetEntries();
41 if((nMaxEvents<0) || (nMaxEvents>treeentries))
42 nMaxEvents=treeentries;
43 //cout << "Found " << nMaxEvents << " in " << fname << endl;
46 TChain *backtheTree = new TChain("AJEPtree");
47 backtheTree->Add(hname);
48 AliJetEventParticles *backev=new AliJetEventParticles();
49 backtheTree->SetBranchAddress("particles",&backev);
51 Int_t backtreeentries=(Int_t)backtheTree->GetEntries();
52 Int_t nPerBackground=nMaxEvents/backtreeentries;
53 if(nPerBackground==0) nPerBackground=1;
55 // create the jet finder
57 AliTkConeJetFinderV2 *ConeFinder = new AliTkConeJetFinderV2();
58 ConeFinder->defaultSettings();
59 //ConeFinder->setSettings(120,40);
60 if(gErrorIgnoreLevel<=kWarning)
61 ConeFinder->setOutput(kTRUE);
62 ConeFinder->setEtMinJet(10);
63 ConeFinder->setPtCut(ptcut);
64 ConeFinder->setEtCut(ptcut);
65 ConeFinder->setRadius(radius);
66 if(savename) sprintf(buffer,"%s",savename);
69 strncpy(buffer2,fname,strlen(fname)-5);
70 buffer2[strlen(fname)-5]='\0';
71 sprintf(buffer,"%s-mixed-thresh-%.1f-rad-%.1f.cone.evout.root",buffer2,ptcut,radius);
73 ConeFinder->setEvOutFilename(buffer);
76 //=========================================================================
77 // start the event loop
78 //=========================================================================
79 TStopwatch *stopwatch=new TStopwatch();
81 Int_t nEventHijing = -1;
82 Int_t nEventHijingCounter = nPerBackground;
83 while(nEvent<nMaxEvents){
86 theTree->GetEvent(nEvent);
88 //load background if needed
89 if(nEventHijingCounter==nPerBackground){
92 backtheTree->GetEvent(nEventHijing);
93 if(nEventHijing==backtreeentries) nEventHijing=0;
94 nEventHijingCounter=0;
97 backev->AddSignal(*ev);
98 TString dummy="Counter: ";
101 //dummy+=ev->GetHeader();
102 dummy+="(Pythia ";dummy+=nEvent;
104 //dummy+=backev->GetHeader();
105 dummy+=", Hijing ";dummy+=nEventHijing;
107 backev->SetHeader(dummy);
108 if(gErrorIgnoreLevel<=kWarning){
109 cout << "Read event: " << nEvent << " " << nEventHijing << endl;
115 ConeFinder->initEvent(backev,dummy);
117 ConeFinder->finishEvent();
118 if(gErrorIgnoreLevel<=kWarning){
119 cout << "JetFinding done: CPU time " << stopwatch->CpuTime()
120 << " Real Time " << stopwatch->RealTime() << endl;
124 nEventHijingCounter++;
128 ConeFinder->finish();