ROOT logo

void read_jets_kine(const char* fn = "jets.root")

{
    //
    // Some histos
    //
    TH1F* eH     = new TH1F("eH"  , "Jet Energy", 40.,  0., 200.);
    TH1F* e1H    = new TH1F("e1H" , "Jet Energy", 40.,  0., 200.);
    TH1F* e2H    = new TH1F("e2H" , "Jet Energy", 40.,  0., 200.);
    TH1F* e3H    = new TH1F("e3H" , "Jet Energy", 40.,  0., 200.);
    TH1F* dr1H = new TH1F("dr1H", "delta R",  160., 0.,   2.);
    TH1F* dr2H = new TH1F("dr2H", "delta R",  160., 0.,   2.);
    TH1F* dr3H = new TH1F("dr4H", "delta R",  160., 0.,   2.);
    TH1F* etaH = new TH1F("etaH", "eta",  160., -2.,   2.);
    

  // load jet library
  gSystem->Load("$(ALICE_ROOT)/lib/tgt_$(ALICE_TARGET)/libJETAN");

  // open file
  TFile *jFile = new TFile(fn);

  // get jet header and display parameters
  AliUA1JetHeader* jHeader = 
    (AliUA1JetHeader*) (jFile->Get("AliUA1JetHeader"));
  jHeader->PrintParameters();

  // get reader header and events to be looped over
  AliJetKineReaderHeader *jReaderH = 
    (AliJetKineReaderHeader*)(jFile->Get("AliJetKineReaderHeader"));
  Int_t first = jReaderH->GetFirstEvent(); 
  Int_t last  = jReaderH->GetLastEvent();
  cout << "First event = " << first << "   Last event = " << last << endl;


  // loop over events
  AliJet *jets, *gjets;
  AliLeading *leading;

  for (Int_t i=first; i< last; i++) {
      cout << "  Analyzing event " << i << endl;
      // get next tree with AliJet
      char nameT[100];
      sprintf(nameT, "TreeJ%d",i);
      TTree *jetT =(TTree *)(jFile->Get(nameT));
      jetT->SetBranchAddress("FoundJet",    &jets);
      jetT->SetBranchAddress("GenJet",      &gjets);
      jetT->SetBranchAddress("LeadingPart", &leading);
      jetT->GetEntry(0);

//
//    Find the jet with E_T closest to 100. 
//
      Int_t njets = jets->GetNJets();
      
      Float_t emax  = 0.;
      Int_t   imax  = -1;
      Float_t demin = 1.e5;
      
      for (Int_t j = 0; j < njets; j++) {
	  if (TMath::Abs(jets->GetPt(j) - 100.)  < demin 
	      && TMath::Abs(jets->GetEta(j)) < 0.5) {
	      emax  = jets->GetPt(j);
	      imax  = j;
	      demin = TMath::Abs(jets->GetPt(j) - 100.);
	  }
      }
      
      if (emax > 105.) {
	  printf("Strange %d %f %f %f\n", i, emax, jets->GetEta(imax), jets->GetPhi(imax));
	  Int_t ngen = gjets->GetNJets();
	    for (Int_t j = 0; j < ngen; j++) {
		  Float_t etag = gjets->GetEta(j);
		  Float_t phig = gjets->GetPhi(j);
		  Float_t eg   = gjets->GetPt(j);
		  printf("Generated %d %f %f %f\n", j, eg, etag, phig);
		  
	    }
      }
      
      if (imax == -1) {
	  e2H->Fill(gjets->GetPt(0));
      } else {
	  eH->Fill(jets->GetPt(imax));
	  dr1H->Fill(jets->GetEta(imax) - gjets->GetEta(0));
//
//    Find the generated jet closest to the reconstructed 
//
	  
	  Float_t rmin;
	  Int_t   igen;
	  Float_t etaj = jets->GetEta(imax);
	  Float_t phij = jets->GetPhi(imax);
	  
	  Int_t ngen = gjets->GetNJets();
	  if (ngen != 0) {
	      rmin = 1.e6;
	      igen = -1;
	      for (Int_t j = 0; j < ngen; j++) {
		  Float_t etag = gjets->GetEta(j);
		  Float_t phig = gjets->GetPhi(j);
		  Float_t deta = etag - etaj;
		  Float_t dphi = TMath::Abs(phig - phij);
		  if (dphi > TMath::Pi()) dphi = 2. * TMath::Pi() - dphi;
		  Float_t r = TMath::Sqrt(deta * deta + dphi * dphi);
		  if (r  < rmin) {
		      rmin = r;
		      igen = j;
		  }
	      }
	      dr2H->Fill(rmin);
	      e1H->Fill(gjets->GetPt(igen));
	      if (rmin > 0.3) {
		  etaH->Fill(etaj);
		  printf("rmin %f %f %f %f %f %f\n", rmin, gjets->GetEta(igen), gjets->GetPhi(igen),
			 etaj, phij, emax);

		  Int_t ngen = gjets->GetNJets();
		  for (Int_t j = 0; j < ngen; j++) {
		      Float_t etag = gjets->GetEta(j);
		      Float_t phig = gjets->GetPhi(j);
		      Float_t eg   = gjets->GetPt(j);
		      printf("   Gen %d %f %f %f\n", j, eg, etag, phig);
	    }
	      }
	      
	  }
      }
      

//
//   Leading particle
//
    Float_t etal = leading->GetLeading()->Eta();
    Float_t phil = leading->GetLeading()->Phi();
    Float_t el   = leading->GetLeading()->E();
    e3H->Fill(el);
    
    Float_t rmin = 1.e6;
    Int_t igen = -1;
    Int_t ngen = gjets->GetNJets();
    for (Int_t j = 0; j < ngen; j++) {
	Float_t etag = gjets->GetEta(j);
	Float_t phig = gjets->GetPhi(j);
	Float_t deta = etag-etal;
	Float_t dphi = TMath::Abs(phig - phil);
	if (dphi > TMath::Pi()) dphi = 2. * TMath::Pi() - dphi;
	Float_t r = TMath::Sqrt(deta * deta + dphi * dphi);
	
	if (r  < rmin) {
		rmin = r;
		igen = j;
	}
    }
 
	dr3H->Fill(rmin);

//    cout << " Generated Jets:" << endl;
//    gjets->PrintJets();
//    cout << " Leading particle: " << endl;
//    leading->PrintLeading();
  }

  // Get Control Plots
  TCanvas* c1 = new TCanvas("c1");
  eH->SetXTitle("E (GeV)");
  eH->Draw();
  
  e1H->SetLineColor(2);
  e2H->SetLineColor(4);
  e3H->SetLineColor(5);
  e1H->Draw("same");
  e2H->Draw("same");
  e3H->Draw("same");

  TCanvas* c2 = new TCanvas("c2");
//  dr1H->Draw();
  dr2H->SetXTitle("#DeltaR(rec, gen)");
  dr2H->SetLineColor(2);
  dr2H->Draw("");
  
  TCanvas* c3 = new TCanvas("c3");
  dr3H->SetXTitle("#DeltaR(rec, gen)");
  dr3H->Draw();
  dr2H->Draw("same");

  TCanvas* c4 = new TCanvas("c4");
  eH->Draw();

  TCanvas* c5 = new TCanvas("c5");
  etaH->Draw();

  
}
 read_jets_kine.C:1
 read_jets_kine.C:2
 read_jets_kine.C:3
 read_jets_kine.C:4
 read_jets_kine.C:5
 read_jets_kine.C:6
 read_jets_kine.C:7
 read_jets_kine.C:8
 read_jets_kine.C:9
 read_jets_kine.C:10
 read_jets_kine.C:11
 read_jets_kine.C:12
 read_jets_kine.C:13
 read_jets_kine.C:14
 read_jets_kine.C:15
 read_jets_kine.C:16
 read_jets_kine.C:17
 read_jets_kine.C:18
 read_jets_kine.C:19
 read_jets_kine.C:20
 read_jets_kine.C:21
 read_jets_kine.C:22
 read_jets_kine.C:23
 read_jets_kine.C:24
 read_jets_kine.C:25
 read_jets_kine.C:26
 read_jets_kine.C:27
 read_jets_kine.C:28
 read_jets_kine.C:29
 read_jets_kine.C:30
 read_jets_kine.C:31
 read_jets_kine.C:32
 read_jets_kine.C:33
 read_jets_kine.C:34
 read_jets_kine.C:35
 read_jets_kine.C:36
 read_jets_kine.C:37
 read_jets_kine.C:38
 read_jets_kine.C:39
 read_jets_kine.C:40
 read_jets_kine.C:41
 read_jets_kine.C:42
 read_jets_kine.C:43
 read_jets_kine.C:44
 read_jets_kine.C:45
 read_jets_kine.C:46
 read_jets_kine.C:47
 read_jets_kine.C:48
 read_jets_kine.C:49
 read_jets_kine.C:50
 read_jets_kine.C:51
 read_jets_kine.C:52
 read_jets_kine.C:53
 read_jets_kine.C:54
 read_jets_kine.C:55
 read_jets_kine.C:56
 read_jets_kine.C:57
 read_jets_kine.C:58
 read_jets_kine.C:59
 read_jets_kine.C:60
 read_jets_kine.C:61
 read_jets_kine.C:62
 read_jets_kine.C:63
 read_jets_kine.C:64
 read_jets_kine.C:65
 read_jets_kine.C:66
 read_jets_kine.C:67
 read_jets_kine.C:68
 read_jets_kine.C:69
 read_jets_kine.C:70
 read_jets_kine.C:71
 read_jets_kine.C:72
 read_jets_kine.C:73
 read_jets_kine.C:74
 read_jets_kine.C:75
 read_jets_kine.C:76
 read_jets_kine.C:77
 read_jets_kine.C:78
 read_jets_kine.C:79
 read_jets_kine.C:80
 read_jets_kine.C:81
 read_jets_kine.C:82
 read_jets_kine.C:83
 read_jets_kine.C:84
 read_jets_kine.C:85
 read_jets_kine.C:86
 read_jets_kine.C:87
 read_jets_kine.C:88
 read_jets_kine.C:89
 read_jets_kine.C:90
 read_jets_kine.C:91
 read_jets_kine.C:92
 read_jets_kine.C:93
 read_jets_kine.C:94
 read_jets_kine.C:95
 read_jets_kine.C:96
 read_jets_kine.C:97
 read_jets_kine.C:98
 read_jets_kine.C:99
 read_jets_kine.C:100
 read_jets_kine.C:101
 read_jets_kine.C:102
 read_jets_kine.C:103
 read_jets_kine.C:104
 read_jets_kine.C:105
 read_jets_kine.C:106
 read_jets_kine.C:107
 read_jets_kine.C:108
 read_jets_kine.C:109
 read_jets_kine.C:110
 read_jets_kine.C:111
 read_jets_kine.C:112
 read_jets_kine.C:113
 read_jets_kine.C:114
 read_jets_kine.C:115
 read_jets_kine.C:116
 read_jets_kine.C:117
 read_jets_kine.C:118
 read_jets_kine.C:119
 read_jets_kine.C:120
 read_jets_kine.C:121
 read_jets_kine.C:122
 read_jets_kine.C:123
 read_jets_kine.C:124
 read_jets_kine.C:125
 read_jets_kine.C:126
 read_jets_kine.C:127
 read_jets_kine.C:128
 read_jets_kine.C:129
 read_jets_kine.C:130
 read_jets_kine.C:131
 read_jets_kine.C:132
 read_jets_kine.C:133
 read_jets_kine.C:134
 read_jets_kine.C:135
 read_jets_kine.C:136
 read_jets_kine.C:137
 read_jets_kine.C:138
 read_jets_kine.C:139
 read_jets_kine.C:140
 read_jets_kine.C:141
 read_jets_kine.C:142
 read_jets_kine.C:143
 read_jets_kine.C:144
 read_jets_kine.C:145
 read_jets_kine.C:146
 read_jets_kine.C:147
 read_jets_kine.C:148
 read_jets_kine.C:149
 read_jets_kine.C:150
 read_jets_kine.C:151
 read_jets_kine.C:152
 read_jets_kine.C:153
 read_jets_kine.C:154
 read_jets_kine.C:155
 read_jets_kine.C:156
 read_jets_kine.C:157
 read_jets_kine.C:158
 read_jets_kine.C:159
 read_jets_kine.C:160
 read_jets_kine.C:161
 read_jets_kine.C:162
 read_jets_kine.C:163
 read_jets_kine.C:164
 read_jets_kine.C:165
 read_jets_kine.C:166
 read_jets_kine.C:167
 read_jets_kine.C:168
 read_jets_kine.C:169
 read_jets_kine.C:170
 read_jets_kine.C:171
 read_jets_kine.C:172
 read_jets_kine.C:173
 read_jets_kine.C:174
 read_jets_kine.C:175
 read_jets_kine.C:176
 read_jets_kine.C:177
 read_jets_kine.C:178
 read_jets_kine.C:179
 read_jets_kine.C:180
 read_jets_kine.C:181
 read_jets_kine.C:182
 read_jets_kine.C:183
 read_jets_kine.C:184
 read_jets_kine.C:185
 read_jets_kine.C:186
 read_jets_kine.C:187
 read_jets_kine.C:188
 read_jets_kine.C:189
 read_jets_kine.C:190
 read_jets_kine.C:191
 read_jets_kine.C:192
 read_jets_kine.C:193
 read_jets_kine.C:194
 read_jets_kine.C:195
 read_jets_kine.C:196