ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2014, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/**************************************************************************
 * AliJXtHistos.h
 * This class encapsulated all histograms that the analysis provides
 *
 *
 * contact: Sami Räsänen
 *          University of Jyväskylä, Finland
 *          sami.s.rasanen@jyu.fi
 **************************************************************************/

#include  "AliJXtHistos.h"
#include  "AliJCard.h"

//______________________________________________________________________________
AliJXtHistos::AliJXtHistos(AliJCard* cardP)
      :	fUseDirectory(true),
	fTopDirectory(0x0),
	fCard(0x0),
        fmaxEtaRange(0.8),
        fhistoList(0x0),
        fhConeActivity(0x0),
        fhConeActivityIsolated(0x0),
        fhZVertRaw(0x0),
        fhCentr(0x0),
        fhiCentr(0x0),
        fhEventPerRun(0x0),
        fhVertexZTriggVtx(0x0)
{
	// constructor
	fCard=cardP;
	fmaxEtaRange = fCard->Get("EtaRange");

	fhistoList = new TList();
	fTopDirectory = gDirectory;
}

//______________________________________________________________________________
AliJXtHistos::AliJXtHistos(const AliJXtHistos& obj)
      :	fUseDirectory(obj.fUseDirectory),
	fTopDirectory(obj.fTopDirectory),
	fCard(obj.fCard),
	fmaxEtaRange(obj.fmaxEtaRange),
	fhistoList(obj.fhistoList),
	fhConeActivity(obj.fhConeActivity),
	fhConeActivityIsolated(obj.fhConeActivityIsolated),
	fhZVertRaw(obj.fhZVertRaw),
	fhCentr(obj.fhCentr),
	fhiCentr(obj.fhiCentr),
	fhEventPerRun(obj.fhEventPerRun),
	fhVertexZTriggVtx(obj.fhVertexZTriggVtx)
{
	// copy constructor
}

//______________________________________________________________________________
AliJXtHistos& AliJXtHistos::operator=(const AliJXtHistos& obj){
	// copy constructor
        this->~AliJXtHistos();
        new(this) AliJXtHistos(obj);
	return *this;
}
//______________________________________________________________________________
TDirectory * AliJXtHistos::MakeDirectory(TString name){
    // Make directory with given name and move into it
    JumpToDefaultDirectory();
    TDirectory * dir = gDirectory->GetDirectory(name);
    if( !dir ) dir = gDirectory->mkdir(name);
    dir->cd();
    return dir;
}
//______________________________________________________________________________
TDirectory * AliJXtHistos::JumpToDefaultDirectory(){
    // Move to default directory
    fTopDirectory->cd();
    return gDirectory;
}
//______________________________________________________________________________
void AliJXtHistos::FillInclusiveHistograms(double pT, double xT, double eta, double phi, double effCorr, int centBin){
    // Fill all inclusive histograms
    fhChargedEta[centBin]->Fill(eta, effCorr);
    fhChargedPhi[centBin]->Fill(phi, effCorr);
    fhChargedPt[centBin]->Fill(pT, effCorr);
    fhChargedXt[centBin]->Fill(xT, effCorr);
    fhInvariantChargedPt[centBin]->Fill(pT, pT > 0. ? effCorr/pT : 0.); // Can you do 1/pT here???
    fhInvariantChargedXt[centBin]->Fill(xT, xT > 0. ? effCorr/xT : 0.); // Can you do 1/xT here???
    // For checks, fill also without efficiency correction
    fhChargedEtaNoCorr[centBin]->Fill(eta);
    fhChargedPhiNoCorr[centBin]->Fill(phi);
    fhChargedPtNoCorr[centBin]->Fill(pT);
    fhChargedXtNoCorr[centBin]->Fill(xT);
}
//______________________________________________________________________________
void AliJXtHistos::FillIsolatedHistograms(double pT, double xT, double eta, double phi, double effCorr, int centBin){
    // Fill all inclusive histograms
    fhIsolatedChargedEta[centBin]->Fill(eta, effCorr);
    fhIsolatedChargedPhi[centBin]->Fill(phi, effCorr);
    fhIsolatedChargedPt[centBin]->Fill(pT, effCorr);
    fhIsolatedChargedXt[centBin]->Fill(xT, effCorr);
    fhInvariantIsolatedChargedPt[centBin]->Fill(pT, pT > 0. ? effCorr/pT : 0.); // Can you do 1/pT here???
    fhInvariantIsolatedChargedXt[centBin]->Fill(xT, xT > 0. ? effCorr/xT : 0.); // Can you do 1/xT here???
}
//______________________________________________________________________________
void AliJXtHistos::CreateXtHistos(){
    // all the histograms of xT analysis
    
	MakeDirectory("xT");
	TH1::SetDefaultSumw2(kTRUE);
	cout << "GetDefaultSumw2() = " << TH1::GetDefaultSumw2() << endl;
    
	// === pT binning
	int nBins=150;
	double logBinsPt[nBins+1], limL=0.1, limH=100;
	double logBW = (log(limH)-log(limL))/nBins;
	for(int ij=0;ij<=nBins;ij++) logBinsPt[ij]=limL*exp(ij*logBW);

	// === xT binning
	int nBinsXt=200;
	double logBinsXt[nBinsXt+1];
	double xTlimL = 1e-5, xTlimH = 1.0, xTlogBW = (log(xTlimH)-log(xTlimL))/nBinsXt;
	for(int ij=0;ij<=nBinsXt;ij++) logBinsXt[ij]=xTlimL*exp(ij*xTlogBW);
    
    // === create histos
	for (int hic = 0;hic < fCard->GetNoOfBins(kCentrType);hic++) {
		float b1 = fCard->GetBinBorder(kCentrType, hic);
		float b2 = fCard->GetBinBorder(kCentrType, hic + 1);
        
		fhChargedPt[hic] = new TH1D(Form("hChargedPt%d",hic), Form("C: %2.0f-%2.0f%%",b1,b2), nBins, logBinsPt );
		fhChargedPt[hic]->Sumw2();
		fhistoList->Add(fhChargedPt[hic]);
        
		fhInvariantChargedPt[hic] = new TH1D(Form("hInvariantChargedPt%d",hic), Form("C: %2.0f-%2.0f%%",b1,b2), nBins, logBinsPt );
		fhInvariantChargedPt[hic]->Sumw2();
		fhistoList->Add(fhInvariantChargedPt[hic]);
        
		fhChargedPtNoCorr[hic] = new TH1D(Form("hChargedPtNoCorr%d",hic), Form("C: %2.0f-%2.0f%%",b1,b2), nBins, logBinsPt );
		fhChargedPtNoCorr[hic]->Sumw2();
		fhistoList->Add(fhChargedPtNoCorr[hic]);
        
		fhIsolatedChargedPt[hic] = new TH1D(Form("hIsolatedChargedPt%d",hic), Form("C: %2.0f-%2.0f%%",b1,b2), nBins, logBinsPt );
		fhIsolatedChargedPt[hic]->Sumw2();
		fhistoList->Add(fhIsolatedChargedPt[hic]);
        
		fhInvariantIsolatedChargedPt[hic] = new TH1D(Form("hInvariantIsolatedChargedPt%d",hic), Form("C: %2.0f-%2.0f%%",b1,b2), nBins, logBinsPt );
		fhInvariantIsolatedChargedPt[hic]->Sumw2();
		fhistoList->Add(fhInvariantIsolatedChargedPt[hic]);
        
        fhChargedXt[hic] = new TH1D(Form("hChargedXt%d",hic),Form("C: %2.0f-%2.0f%%",b1,b2), nBinsXt, logBinsXt );
        fhChargedXt[hic]->Sumw2();
        fhistoList->Add( fhChargedXt[hic] );
        
        fhInvariantChargedXt[hic] = new TH1D(Form("hInvariantChargedXt%d",hic),Form("C: %2.0f-%2.0f%%",b1,b2), nBinsXt, logBinsXt );
        fhInvariantChargedXt[hic]->Sumw2();
        fhistoList->Add( fhInvariantChargedXt[hic] );
        
        fhChargedXtNoCorr[hic] = new TH1D(Form("hChargedXtNoCorr%d",hic),Form("C: %2.0f-%2.0f%%",b1,b2), nBinsXt, logBinsXt );
        fhChargedXtNoCorr[hic]->Sumw2();
        fhistoList->Add( fhChargedXtNoCorr[hic] );
        
        fhIsolatedChargedXt[hic] = new TH1D(Form("hIsolatedChargedXt%d",hic),Form("C: %2.0f-%2.0f%%",b1,b2), nBinsXt, logBinsXt );
        fhIsolatedChargedXt[hic]->Sumw2();
        fhistoList->Add( fhIsolatedChargedXt[hic] );
        
        fhInvariantIsolatedChargedXt[hic] = new TH1D(Form("hInvariantIsolatedChargedXt%d",hic),Form("C: %2.0f-%2.0f%%",b1,b2), nBinsXt, logBinsXt );
        fhInvariantIsolatedChargedXt[hic]->Sumw2();
        fhistoList->Add( fhInvariantIsolatedChargedXt[hic] );
        
        fhChargedEta[hic] = new TH1D(Form("hChargedEta%d",hic),Form("C: %2.0f-%2.0f%%",b1,b2),100,-1.0,1.0);
        fhChargedEta[hic]->Sumw2();
        fhistoList->Add(fhChargedEta[hic]);
        
        fhChargedEtaNoCorr[hic] = new TH1D(Form("hChargedEtaNoCorr%d",hic),Form("C: %2.0f-%2.0f%%",b1,b2),100,-1.0,1.0);
        fhChargedEtaNoCorr[hic]->Sumw2();
        fhistoList->Add(fhChargedEtaNoCorr[hic]);
        
        fhIsolatedChargedEta[hic] = new TH1D(Form("hIsolatedChargedEta%d",hic),Form("C: %2.0f-%2.0f%%",b1,b2),100,-1.0,1.0);
        fhIsolatedChargedEta[hic]->Sumw2();
        fhistoList->Add(fhIsolatedChargedEta[hic]);
        
        fhChargedPhi[hic] = new TH1D(Form("hChargedPhi%d",hic),Form("C: %2.0f-%2.0f%%",b1,b2),128,-0.2,6.4);
        fhChargedPhi[hic]->Sumw2();
        fhistoList->Add(fhChargedPhi[hic]);
        
        fhChargedPhiNoCorr[hic] = new TH1D(Form("hChargedPhiNoCorr%d",hic),Form("C: %2.0f-%2.0f%%",b1,b2),128,-0.2,6.4);
        fhChargedPhiNoCorr[hic]->Sumw2();
        fhistoList->Add(fhChargedPhiNoCorr[hic]);
        
        fhIsolatedChargedPhi[hic] = new TH1D(Form("hIsolatedChargedPhi%d",hic),Form("C: %2.0f-%2.0f%%",b1,b2),128,-0.2,6.4);
        fhIsolatedChargedPhi[hic]->Sumw2();
        fhistoList->Add(fhIsolatedChargedPhi[hic]);
        
        fhZVert[hic] = new TH1D(Form("hZVert%d",hic),Form("C: %2.0f-%2.0f%%",b1,b2), 120, -30., 30.);
        fhistoList->Add(fhZVert[hic]);
	}

	fhZVertRaw  = new TH1D("hZVertRaw","vertex 0", 120, -30., 30.);
	fhistoList->Add(fhZVertRaw);
	fhCentr          = new TH1D("hCentr","centrality", 101, -0.5, 100.5);
	fhistoList->Add(fhCentr);
	fhiCentr         = new TH1D("hiCentr","centrality",10, -0.5, 9.5);
	fhistoList->Add(fhiCentr);
	fhEventPerRun = new TH1D("hEventPerRun","log(eve)/run",200, 0, 30.0);
	fhistoList->Add(fhEventPerRun);

	//------------------ for Abs Norm FK --------------------------------
	double   binsVertexMult[] = {0,1,2,3,4,5,10000};
	int   nBinsVertexMult  = sizeof(binsVertexMult)/sizeof(double)-1;
	double binsVertexZ[]    = {-10,-6,-3,-2,-1.5,-1,-0.5,0,0.5,1,1.5,2,3,6,10};
	int   nBinsVertexZ   = sizeof(binsVertexZ)/sizeof(double)-1;
	fhVertexZTriggVtx = new TH2D("hVertexZTriggVtx","Vertex counts", nBinsVertexMult, binsVertexMult, nBinsVertexZ, binsVertexZ);
	fhistoList->Add(fhVertexZTriggVtx);

	sprintf(fhtit, "Mean activity inside cone");
	sprintf(fhname, "hActivity");
	fhConeActivity = new TProfile(fhname, fhtit, nBins, logBinsPt );
	fhistoList->Add(fhConeActivity);

	sprintf(fhtit, "Mean pion activity inside cone isolated");
	sprintf(fhname, "hActivityIsolated");
	fhConeActivityIsolated = new TProfile(fhname, fhtit, nBins, logBinsPt );
	fhistoList->Add(fhConeActivityIsolated);

	JumpToDefaultDirectory();
}
 AliJXtHistos.cxx:1
 AliJXtHistos.cxx:2
 AliJXtHistos.cxx:3
 AliJXtHistos.cxx:4
 AliJXtHistos.cxx:5
 AliJXtHistos.cxx:6
 AliJXtHistos.cxx:7
 AliJXtHistos.cxx:8
 AliJXtHistos.cxx:9
 AliJXtHistos.cxx:10
 AliJXtHistos.cxx:11
 AliJXtHistos.cxx:12
 AliJXtHistos.cxx:13
 AliJXtHistos.cxx:14
 AliJXtHistos.cxx:15
 AliJXtHistos.cxx:16
 AliJXtHistos.cxx:17
 AliJXtHistos.cxx:18
 AliJXtHistos.cxx:19
 AliJXtHistos.cxx:20
 AliJXtHistos.cxx:21
 AliJXtHistos.cxx:22
 AliJXtHistos.cxx:23
 AliJXtHistos.cxx:24
 AliJXtHistos.cxx:25
 AliJXtHistos.cxx:26
 AliJXtHistos.cxx:27
 AliJXtHistos.cxx:28
 AliJXtHistos.cxx:29
 AliJXtHistos.cxx:30
 AliJXtHistos.cxx:31
 AliJXtHistos.cxx:32
 AliJXtHistos.cxx:33
 AliJXtHistos.cxx:34
 AliJXtHistos.cxx:35
 AliJXtHistos.cxx:36
 AliJXtHistos.cxx:37
 AliJXtHistos.cxx:38
 AliJXtHistos.cxx:39
 AliJXtHistos.cxx:40
 AliJXtHistos.cxx:41
 AliJXtHistos.cxx:42
 AliJXtHistos.cxx:43
 AliJXtHistos.cxx:44
 AliJXtHistos.cxx:45
 AliJXtHistos.cxx:46
 AliJXtHistos.cxx:47
 AliJXtHistos.cxx:48
 AliJXtHistos.cxx:49
 AliJXtHistos.cxx:50
 AliJXtHistos.cxx:51
 AliJXtHistos.cxx:52
 AliJXtHistos.cxx:53
 AliJXtHistos.cxx:54
 AliJXtHistos.cxx:55
 AliJXtHistos.cxx:56
 AliJXtHistos.cxx:57
 AliJXtHistos.cxx:58
 AliJXtHistos.cxx:59
 AliJXtHistos.cxx:60
 AliJXtHistos.cxx:61
 AliJXtHistos.cxx:62
 AliJXtHistos.cxx:63
 AliJXtHistos.cxx:64
 AliJXtHistos.cxx:65
 AliJXtHistos.cxx:66
 AliJXtHistos.cxx:67
 AliJXtHistos.cxx:68
 AliJXtHistos.cxx:69
 AliJXtHistos.cxx:70
 AliJXtHistos.cxx:71
 AliJXtHistos.cxx:72
 AliJXtHistos.cxx:73
 AliJXtHistos.cxx:74
 AliJXtHistos.cxx:75
 AliJXtHistos.cxx:76
 AliJXtHistos.cxx:77
 AliJXtHistos.cxx:78
 AliJXtHistos.cxx:79
 AliJXtHistos.cxx:80
 AliJXtHistos.cxx:81
 AliJXtHistos.cxx:82
 AliJXtHistos.cxx:83
 AliJXtHistos.cxx:84
 AliJXtHistos.cxx:85
 AliJXtHistos.cxx:86
 AliJXtHistos.cxx:87
 AliJXtHistos.cxx:88
 AliJXtHistos.cxx:89
 AliJXtHistos.cxx:90
 AliJXtHistos.cxx:91
 AliJXtHistos.cxx:92
 AliJXtHistos.cxx:93
 AliJXtHistos.cxx:94
 AliJXtHistos.cxx:95
 AliJXtHistos.cxx:96
 AliJXtHistos.cxx:97
 AliJXtHistos.cxx:98
 AliJXtHistos.cxx:99
 AliJXtHistos.cxx:100
 AliJXtHistos.cxx:101
 AliJXtHistos.cxx:102
 AliJXtHistos.cxx:103
 AliJXtHistos.cxx:104
 AliJXtHistos.cxx:105
 AliJXtHistos.cxx:106
 AliJXtHistos.cxx:107
 AliJXtHistos.cxx:108
 AliJXtHistos.cxx:109
 AliJXtHistos.cxx:110
 AliJXtHistos.cxx:111
 AliJXtHistos.cxx:112
 AliJXtHistos.cxx:113
 AliJXtHistos.cxx:114
 AliJXtHistos.cxx:115
 AliJXtHistos.cxx:116
 AliJXtHistos.cxx:117
 AliJXtHistos.cxx:118
 AliJXtHistos.cxx:119
 AliJXtHistos.cxx:120
 AliJXtHistos.cxx:121
 AliJXtHistos.cxx:122
 AliJXtHistos.cxx:123
 AliJXtHistos.cxx:124
 AliJXtHistos.cxx:125
 AliJXtHistos.cxx:126
 AliJXtHistos.cxx:127
 AliJXtHistos.cxx:128
 AliJXtHistos.cxx:129
 AliJXtHistos.cxx:130
 AliJXtHistos.cxx:131
 AliJXtHistos.cxx:132
 AliJXtHistos.cxx:133
 AliJXtHistos.cxx:134
 AliJXtHistos.cxx:135
 AliJXtHistos.cxx:136
 AliJXtHistos.cxx:137
 AliJXtHistos.cxx:138
 AliJXtHistos.cxx:139
 AliJXtHistos.cxx:140
 AliJXtHistos.cxx:141
 AliJXtHistos.cxx:142
 AliJXtHistos.cxx:143
 AliJXtHistos.cxx:144
 AliJXtHistos.cxx:145
 AliJXtHistos.cxx:146
 AliJXtHistos.cxx:147
 AliJXtHistos.cxx:148
 AliJXtHistos.cxx:149
 AliJXtHistos.cxx:150
 AliJXtHistos.cxx:151
 AliJXtHistos.cxx:152
 AliJXtHistos.cxx:153
 AliJXtHistos.cxx:154
 AliJXtHistos.cxx:155
 AliJXtHistos.cxx:156
 AliJXtHistos.cxx:157
 AliJXtHistos.cxx:158
 AliJXtHistos.cxx:159
 AliJXtHistos.cxx:160
 AliJXtHistos.cxx:161
 AliJXtHistos.cxx:162
 AliJXtHistos.cxx:163
 AliJXtHistos.cxx:164
 AliJXtHistos.cxx:165
 AliJXtHistos.cxx:166
 AliJXtHistos.cxx:167
 AliJXtHistos.cxx:168
 AliJXtHistos.cxx:169
 AliJXtHistos.cxx:170
 AliJXtHistos.cxx:171
 AliJXtHistos.cxx:172
 AliJXtHistos.cxx:173
 AliJXtHistos.cxx:174
 AliJXtHistos.cxx:175
 AliJXtHistos.cxx:176
 AliJXtHistos.cxx:177
 AliJXtHistos.cxx:178
 AliJXtHistos.cxx:179
 AliJXtHistos.cxx:180
 AliJXtHistos.cxx:181
 AliJXtHistos.cxx:182
 AliJXtHistos.cxx:183
 AliJXtHistos.cxx:184
 AliJXtHistos.cxx:185
 AliJXtHistos.cxx:186
 AliJXtHistos.cxx:187
 AliJXtHistos.cxx:188
 AliJXtHistos.cxx:189
 AliJXtHistos.cxx:190
 AliJXtHistos.cxx:191
 AliJXtHistos.cxx:192
 AliJXtHistos.cxx:193
 AliJXtHistos.cxx:194
 AliJXtHistos.cxx:195
 AliJXtHistos.cxx:196
 AliJXtHistos.cxx:197
 AliJXtHistos.cxx:198
 AliJXtHistos.cxx:199
 AliJXtHistos.cxx:200
 AliJXtHistos.cxx:201
 AliJXtHistos.cxx:202
 AliJXtHistos.cxx:203
 AliJXtHistos.cxx:204
 AliJXtHistos.cxx:205
 AliJXtHistos.cxx:206
 AliJXtHistos.cxx:207
 AliJXtHistos.cxx:208
 AliJXtHistos.cxx:209
 AliJXtHistos.cxx:210
 AliJXtHistos.cxx:211
 AliJXtHistos.cxx:212
 AliJXtHistos.cxx:213
 AliJXtHistos.cxx:214
 AliJXtHistos.cxx:215
 AliJXtHistos.cxx:216
 AliJXtHistos.cxx:217
 AliJXtHistos.cxx:218
 AliJXtHistos.cxx:219
 AliJXtHistos.cxx:220
 AliJXtHistos.cxx:221
 AliJXtHistos.cxx:222
 AliJXtHistos.cxx:223
 AliJXtHistos.cxx:224
 AliJXtHistos.cxx:225
 AliJXtHistos.cxx:226
 AliJXtHistos.cxx:227
 AliJXtHistos.cxx:228
 AliJXtHistos.cxx:229
 AliJXtHistos.cxx:230
 AliJXtHistos.cxx:231
 AliJXtHistos.cxx:232
 AliJXtHistos.cxx:233
 AliJXtHistos.cxx:234
 AliJXtHistos.cxx:235
 AliJXtHistos.cxx:236
 AliJXtHistos.cxx:237
 AliJXtHistos.cxx:238