ROOT logo
//====================================
//last modified FK 6.NOV 2009
//====================================
//blah
// blah

#include "AliJCard.h"

//ClassImp(AliJCard);

AliJCard::AliJCard():
    AliJBaseCard(),
    fhCorr(0),
    feventV3kv(0),
    fIndexVector(0),
    fpi0massbin(0)
{   
    //constructor
}

AliJCard::AliJCard(const char *filename):
    AliJBaseCard(filename),
    fhCorr(0),
    feventV3kv(0),
    fIndexVector(0),
    fpi0massbin(0)
{  
    //constructor
    InitCard();
    MakeFastCorrTypeIndex();
}



AliJCard::AliJCard(const AliJCard& obj) : 
    AliJBaseCard(),
    fhCorr(obj.fhCorr),
    feventV3kv(obj.feventV3kv),
    fIndexVector(obj.fIndexVector),
    fpi0massbin(obj.fpi0massbin)
{
    // copy constructor
    JUNUSED(obj);
}


AliJCard& AliJCard::operator=(const AliJCard& obj){
    // copy constructor
    JUNUSED(obj);
    return *this;
}

AliJCard::~AliJCard(){
    // destructor
    if( fpi0massbin ){
        for( int i = 0; i < GetNoOfBins( kCentrType ); i++ ){
            delete [] fpi0massbin[i];
        }    // destructor
        delete [] fpi0massbin;
    }
    if( fhCorr ){
        delete fhCorr;
    }
}

void AliJCard::MakeFastCorrTypeIndex(){
    // make fast findex array
    for( unsigned int i=0;i<fKeyWordVector.size();i++ ){
        int corrIndex = GetCorrType( fKeyWordVector[i] );
        if( corrIndex != kNoType )
            fIndexVector[corrIndex] = i;
    }

}

int AliJCard::IsLessThanUpperPairPtCut(double inPairPt){ 
    // pt cut
    int nB = GetN("UpperPairPtCut");
    if(inPairPt == -999) return nB;
    if(-999 < inPairPt && inPairPt <=0) return int(Get("UpperPairPtCut",-int(inPairPt)));
    int bin=-1, i=0;
    while(i<nB && inPairPt>Get("UpperPairPtCut",i)) i++;
    if(i<nB) bin=i;
    //cout<<" i="<<i<<" bin="<<bin<<" inval="<<inPairPt<<endl;;
    return bin;
}



TString AliJCard::GetKeyWord(corrType ctype){
    // get keyword
    TString kw;

    switch(ctype){
        case kTriggType:  kw = "TriggPtBorders"; break;
        case kAssocType:  kw = "AssocPtBorders"; break;
        case kXeType:     kw = "xEBorders"; break;
        case kLongType:   kw = "KlongBorders"; break;
        case kCentrType:  kw = "CentBinBorders"; break;
        case kZVertType:  kw = "zVertBins"; break;
        case kMassType:   kw = "PairInvariantMassBins"; break;
        case kEtaGapType: kw = "EtaGapThresholds"; break;
        case kDiJetType:  kw = "DiJetMassBorders"; break;
        case kRGapType:   kw = "RGapThresholds"; break;
                          //case kEPType:  kw = "EPBorders"; break;
        default : cout<<"ERROR: kNoType on input to AliJCard::GetKeyWord"<<endl; exit(1); break;
    }
    return kw; 
}

corrType AliJCard::GetCorrType( TString inStr ){
    // get corr type
    TString kw;

    int i;
    TString s;

    // go through all corrType to check if the parameter should be added
    // into fast findex array
    for( i = 0; i < kNcorrType; i++ ){
        if( i == kNoType )
            continue;

        s = GetKeyWord( (corrType)i );
        if( ! strcmp( s.Data(), inStr.Data() ))
            return (corrType)i;
    }

    return kNoType; 
}

int AliJCard::GetN(corrType ctype){
    //returns size of TVector
    return GetN(GetKeyWord(ctype));
}

int AliJCard::GetNFast(corrType ctype){
    //returns size of TVector
    int findex = fIndexVector[ctype];
    if( findex > -1 ){
        return (int) fValuesVector[findex].GetNrows();
    }else{
        cout<<"ERROR: fValuesVector fast findex out of range "<< findex << " " << (GetKeyWord( ctype )).Data() << endl;
        exit(1);
    }
}


float AliJCard::Get(corrType ctype, int VectorComponent){
    //returns VectorComponent Component of  fValuesVecto`uor TVector for given keyword
    return Get(GetKeyWord(ctype), VectorComponent);
}

float AliJCard::GetFast(corrType ctype, int VectorComponent){
    // fast get

    if(0<=VectorComponent && VectorComponent<GetNFast(ctype) && fIndexVector[ctype] > -1 ){
        return fValuesVector[fIndexVector[ctype]][VectorComponent+1];
    }else{
        cout<<"ERROR: fValuesVector fast findex out of range "<< (GetKeyWord(ctype)).Data()<<endl;
        exit(1);
    }
}

void AliJCard::ReCompile(){
    InitCard();
    MakeFastCorrTypeIndex();
}


void AliJCard::InitCard(){
    // Init card
    cout<<"Init of AliJCard"<<endl;
    // set the length of fIndexVector and disable all indices
    fIndexVector.resize( kNcorrType  );
    for( int i = 0; i < kNcorrType; i++ )
        fIndexVector[i] = -1;
}

void AliJCard::FinishCard(){
    // Finish loading of card
    AliJBaseCard::FinishCard();
    // recompute fast idices

    fpi0massbin = new Double_t*[GetNoOfBins( kCentrType )];

    char centstr[10];

    // read the pi0 mass bin parameters
    for( int i = 0; i < GetNoOfBins( kCentrType ); i++ ){
        fpi0massbin[i] = new Double_t[8];

        for( int j = 0; j < 8; j++ ){
            sprintf( centstr, "cent%d", i );
            fpi0massbin[i][j] = Get( centstr, j );
        }
    }

}

void AliJCard::PrintOut(){
    // Print out contents of card
    AliJBaseCard::PrintOut();
    cout << "----- fast array ----------" << endl;
    for( unsigned int ii = 0; ii < fIndexVector.size(); ii++ ){
        if( ii == kNoType )
            continue;
        cout << (GetKeyWord( (corrType)ii )).Data() << " " << fIndexVector[ii];
        if( fIndexVector[ii] > -1 ){
            cout<<" (dim ="<<fValuesVector[fIndexVector[ii]].GetNrows()<<") ";//print size of TVector
            for(int j=1; j<=fValuesVector[fIndexVector[ii]].GetNrows(); j++){
                cout<<fValuesVector[fIndexVector[ii]][j]<<" ";//TVector components
            }
        }
        else
            cout << " no link!";

        cout << endl;  
    }
}

int AliJCard::GetBin(corrType ctype, float val){
    // get bin

    if(ctype == kNoType) return 0;

    TVector * v = &fValuesVector[fIndexVector[ctype]];
    int iBin2 = TMath::BinarySearch( v->GetNrows(), v->GetMatrixArray(), val );
    if( iBin2 >= v->GetNrows()-1 ) iBin2 = -1;

    return iBin2;
}

int AliJCard::GetBinFast(corrType ctype, float val){
    // fast get bin

    if(ctype == kNoType) return 0;

    for(int i=0; i<(GetNFast(ctype)-1); i++)
        if(GetFast(ctype,i)<=val && val<GetFast(ctype,i+1))
            return i;

    return -1;
}



bool AliJCard::IsGoodRun(int runID){
    // run quality
    bool isgood = true;
    for(int i=0; i<GetN("badRuns");i++) if(((int) Get("badRuns",i)) == runID) isgood = false;

    return isgood;
}

bool AliJCard::MbTrigger(int triggin) const {
    // MB trigger
    return (triggin & (1<<kMinBiasTriggerBitJCorran)) > 0; //masking on >0 masking off ==0 desired trigger
}


bool AliJCard::SimilarVertZ(float Z1, float Z2){
    // z vert
    static double v = Get("maxMixDZ");
    if( v < 0 ) return 1;
    return fabs(Z1-Z2) < v ;
}

bool AliJCard::SimilarMultiplicity(float mult1, float mult2){
    // multi
    static double v = Get("maxMixDMult");
    if( v <0) return 1;
    return fabs(mult1-mult2) < v;
}


bool AliJCard::SimilarCentrality(float c1, float c2, int cbin){
    // centra
    static TVector *v = GetVector("maxDCent");
    if(v==NULL) return 1;
    return fabs(c1-c2) < (*v)[cbin+1]; // TODO
}


//--------- P H E N I X    C G L --------------

bool AliJCard::InPhiRange(float Phi){
    // phi
    bool isIn = false; 
    for(int i=1; i<GetN("phiDCRange"); i+=2 ) 
        isIn = isIn || (Get("phiDCRange",i-1)<Phi && Phi<Get("phiDCRange",i));
    return isIn;
} 



bool  AliJCard::CheckTrackParamsInTPC(int NClustersTPC,float Chi2PerClusterTPC){
    // tpc pars
    bool isGoodTrack = true;
    if(NClustersTPC < Get("MinNClustersTPC"))           isGoodTrack = false;
    if(Chi2PerClusterTPC > Get("MaxChi2PerClusterTPC")) isGoodTrack = false;
    return isGoodTrack;
}

bool  AliJCard::CheckMinNumTPCClustPt(int NClustersTPC, float fpt){
    // tpc pars
    float minNTPCCls =  Get("ParMinNClustTPCPt",0)*log(Get("ParMinNClustTPCPt",1)*fpt + Get("ParMinNClustTPCPt",2)); 
    if(NClustersTPC > minNTPCCls) return true; //track had enough clusters
    else return false;  //track did not have sufficient number of clusters
}


bool  AliJCard::CheckTrackImpact(float xyIm, float zIm, float fpt){
    // tpc pars
    bool isGoodTrack = true;
    if(TMath::Abs(xyIm) > Get("ParMaxDCAToVertexXYPtDep",0)+Get("ParMaxDCAToVertexXYPtDep",1)/pow(fpt,Get("ParMaxDCAToVertexXYPtDep",2))){
        isGoodTrack = false;
    }
    if(TMath::Abs(zIm) > Get("MaxDCAToVertexZ")) isGoodTrack = false;

    return isGoodTrack;
}



bool AliJCard::DeltaEtaCheck(const AliJBaseTrack *ftk1, const AliJBaseTrack *ftk2) {
    // deta
    double delta = fabs( log(tan(ftk1->Theta()/2.0)) -  log(tan(ftk2->Theta()/2.0)) );
    if(Get("etaCut")>0) return delta < Get("etaCut");
    if(Get("etaCut")<0) return delta > Get("etaCut");

    return true;
}





















 AliJCard.cxx:1
 AliJCard.cxx:2
 AliJCard.cxx:3
 AliJCard.cxx:4
 AliJCard.cxx:5
 AliJCard.cxx:6
 AliJCard.cxx:7
 AliJCard.cxx:8
 AliJCard.cxx:9
 AliJCard.cxx:10
 AliJCard.cxx:11
 AliJCard.cxx:12
 AliJCard.cxx:13
 AliJCard.cxx:14
 AliJCard.cxx:15
 AliJCard.cxx:16
 AliJCard.cxx:17
 AliJCard.cxx:18
 AliJCard.cxx:19
 AliJCard.cxx:20
 AliJCard.cxx:21
 AliJCard.cxx:22
 AliJCard.cxx:23
 AliJCard.cxx:24
 AliJCard.cxx:25
 AliJCard.cxx:26
 AliJCard.cxx:27
 AliJCard.cxx:28
 AliJCard.cxx:29
 AliJCard.cxx:30
 AliJCard.cxx:31
 AliJCard.cxx:32
 AliJCard.cxx:33
 AliJCard.cxx:34
 AliJCard.cxx:35
 AliJCard.cxx:36
 AliJCard.cxx:37
 AliJCard.cxx:38
 AliJCard.cxx:39
 AliJCard.cxx:40
 AliJCard.cxx:41
 AliJCard.cxx:42
 AliJCard.cxx:43
 AliJCard.cxx:44
 AliJCard.cxx:45
 AliJCard.cxx:46
 AliJCard.cxx:47
 AliJCard.cxx:48
 AliJCard.cxx:49
 AliJCard.cxx:50
 AliJCard.cxx:51
 AliJCard.cxx:52
 AliJCard.cxx:53
 AliJCard.cxx:54
 AliJCard.cxx:55
 AliJCard.cxx:56
 AliJCard.cxx:57
 AliJCard.cxx:58
 AliJCard.cxx:59
 AliJCard.cxx:60
 AliJCard.cxx:61
 AliJCard.cxx:62
 AliJCard.cxx:63
 AliJCard.cxx:64
 AliJCard.cxx:65
 AliJCard.cxx:66
 AliJCard.cxx:67
 AliJCard.cxx:68
 AliJCard.cxx:69
 AliJCard.cxx:70
 AliJCard.cxx:71
 AliJCard.cxx:72
 AliJCard.cxx:73
 AliJCard.cxx:74
 AliJCard.cxx:75
 AliJCard.cxx:76
 AliJCard.cxx:77
 AliJCard.cxx:78
 AliJCard.cxx:79
 AliJCard.cxx:80
 AliJCard.cxx:81
 AliJCard.cxx:82
 AliJCard.cxx:83
 AliJCard.cxx:84
 AliJCard.cxx:85
 AliJCard.cxx:86
 AliJCard.cxx:87
 AliJCard.cxx:88
 AliJCard.cxx:89
 AliJCard.cxx:90
 AliJCard.cxx:91
 AliJCard.cxx:92
 AliJCard.cxx:93
 AliJCard.cxx:94
 AliJCard.cxx:95
 AliJCard.cxx:96
 AliJCard.cxx:97
 AliJCard.cxx:98
 AliJCard.cxx:99
 AliJCard.cxx:100
 AliJCard.cxx:101
 AliJCard.cxx:102
 AliJCard.cxx:103
 AliJCard.cxx:104
 AliJCard.cxx:105
 AliJCard.cxx:106
 AliJCard.cxx:107
 AliJCard.cxx:108
 AliJCard.cxx:109
 AliJCard.cxx:110
 AliJCard.cxx:111
 AliJCard.cxx:112
 AliJCard.cxx:113
 AliJCard.cxx:114
 AliJCard.cxx:115
 AliJCard.cxx:116
 AliJCard.cxx:117
 AliJCard.cxx:118
 AliJCard.cxx:119
 AliJCard.cxx:120
 AliJCard.cxx:121
 AliJCard.cxx:122
 AliJCard.cxx:123
 AliJCard.cxx:124
 AliJCard.cxx:125
 AliJCard.cxx:126
 AliJCard.cxx:127
 AliJCard.cxx:128
 AliJCard.cxx:129
 AliJCard.cxx:130
 AliJCard.cxx:131
 AliJCard.cxx:132
 AliJCard.cxx:133
 AliJCard.cxx:134
 AliJCard.cxx:135
 AliJCard.cxx:136
 AliJCard.cxx:137
 AliJCard.cxx:138
 AliJCard.cxx:139
 AliJCard.cxx:140
 AliJCard.cxx:141
 AliJCard.cxx:142
 AliJCard.cxx:143
 AliJCard.cxx:144
 AliJCard.cxx:145
 AliJCard.cxx:146
 AliJCard.cxx:147
 AliJCard.cxx:148
 AliJCard.cxx:149
 AliJCard.cxx:150
 AliJCard.cxx:151
 AliJCard.cxx:152
 AliJCard.cxx:153
 AliJCard.cxx:154
 AliJCard.cxx:155
 AliJCard.cxx:156
 AliJCard.cxx:157
 AliJCard.cxx:158
 AliJCard.cxx:159
 AliJCard.cxx:160
 AliJCard.cxx:161
 AliJCard.cxx:162
 AliJCard.cxx:163
 AliJCard.cxx:164
 AliJCard.cxx:165
 AliJCard.cxx:166
 AliJCard.cxx:167
 AliJCard.cxx:168
 AliJCard.cxx:169
 AliJCard.cxx:170
 AliJCard.cxx:171
 AliJCard.cxx:172
 AliJCard.cxx:173
 AliJCard.cxx:174
 AliJCard.cxx:175
 AliJCard.cxx:176
 AliJCard.cxx:177
 AliJCard.cxx:178
 AliJCard.cxx:179
 AliJCard.cxx:180
 AliJCard.cxx:181
 AliJCard.cxx:182
 AliJCard.cxx:183
 AliJCard.cxx:184
 AliJCard.cxx:185
 AliJCard.cxx:186
 AliJCard.cxx:187
 AliJCard.cxx:188
 AliJCard.cxx:189
 AliJCard.cxx:190
 AliJCard.cxx:191
 AliJCard.cxx:192
 AliJCard.cxx:193
 AliJCard.cxx:194
 AliJCard.cxx:195
 AliJCard.cxx:196
 AliJCard.cxx:197
 AliJCard.cxx:198
 AliJCard.cxx:199
 AliJCard.cxx:200
 AliJCard.cxx:201
 AliJCard.cxx:202
 AliJCard.cxx:203
 AliJCard.cxx:204
 AliJCard.cxx:205
 AliJCard.cxx:206
 AliJCard.cxx:207
 AliJCard.cxx:208
 AliJCard.cxx:209
 AliJCard.cxx:210
 AliJCard.cxx:211
 AliJCard.cxx:212
 AliJCard.cxx:213
 AliJCard.cxx:214
 AliJCard.cxx:215
 AliJCard.cxx:216
 AliJCard.cxx:217
 AliJCard.cxx:218
 AliJCard.cxx:219
 AliJCard.cxx:220
 AliJCard.cxx:221
 AliJCard.cxx:222
 AliJCard.cxx:223
 AliJCard.cxx:224
 AliJCard.cxx:225
 AliJCard.cxx:226
 AliJCard.cxx:227
 AliJCard.cxx:228
 AliJCard.cxx:229
 AliJCard.cxx:230
 AliJCard.cxx:231
 AliJCard.cxx:232
 AliJCard.cxx:233
 AliJCard.cxx:234
 AliJCard.cxx:235
 AliJCard.cxx:236
 AliJCard.cxx:237
 AliJCard.cxx:238
 AliJCard.cxx:239
 AliJCard.cxx:240
 AliJCard.cxx:241
 AliJCard.cxx:242
 AliJCard.cxx:243
 AliJCard.cxx:244
 AliJCard.cxx:245
 AliJCard.cxx:246
 AliJCard.cxx:247
 AliJCard.cxx:248
 AliJCard.cxx:249
 AliJCard.cxx:250
 AliJCard.cxx:251
 AliJCard.cxx:252
 AliJCard.cxx:253
 AliJCard.cxx:254
 AliJCard.cxx:255
 AliJCard.cxx:256
 AliJCard.cxx:257
 AliJCard.cxx:258
 AliJCard.cxx:259
 AliJCard.cxx:260
 AliJCard.cxx:261
 AliJCard.cxx:262
 AliJCard.cxx:263
 AliJCard.cxx:264
 AliJCard.cxx:265
 AliJCard.cxx:266
 AliJCard.cxx:267
 AliJCard.cxx:268
 AliJCard.cxx:269
 AliJCard.cxx:270
 AliJCard.cxx:271
 AliJCard.cxx:272
 AliJCard.cxx:273
 AliJCard.cxx:274
 AliJCard.cxx:275
 AliJCard.cxx:276
 AliJCard.cxx:277
 AliJCard.cxx:278
 AliJCard.cxx:279
 AliJCard.cxx:280
 AliJCard.cxx:281
 AliJCard.cxx:282
 AliJCard.cxx:283
 AliJCard.cxx:284
 AliJCard.cxx:285
 AliJCard.cxx:286
 AliJCard.cxx:287
 AliJCard.cxx:288
 AliJCard.cxx:289
 AliJCard.cxx:290
 AliJCard.cxx:291
 AliJCard.cxx:292
 AliJCard.cxx:293
 AliJCard.cxx:294
 AliJCard.cxx:295
 AliJCard.cxx:296
 AliJCard.cxx:297
 AliJCard.cxx:298
 AliJCard.cxx:299
 AliJCard.cxx:300
 AliJCard.cxx:301
 AliJCard.cxx:302
 AliJCard.cxx:303
 AliJCard.cxx:304
 AliJCard.cxx:305
 AliJCard.cxx:306
 AliJCard.cxx:307
 AliJCard.cxx:308
 AliJCard.cxx:309
 AliJCard.cxx:310
 AliJCard.cxx:311
 AliJCard.cxx:312
 AliJCard.cxx:313
 AliJCard.cxx:314
 AliJCard.cxx:315
 AliJCard.cxx:316
 AliJCard.cxx:317
 AliJCard.cxx:318
 AliJCard.cxx:319
 AliJCard.cxx:320
 AliJCard.cxx:321
 AliJCard.cxx:322
 AliJCard.cxx:323
 AliJCard.cxx:324
 AliJCard.cxx:325
 AliJCard.cxx:326
 AliJCard.cxx:327
 AliJCard.cxx:328
 AliJCard.cxx:329
 AliJCard.cxx:330
 AliJCard.cxx:331
 AliJCard.cxx:332
 AliJCard.cxx:333
 AliJCard.cxx:334
 AliJCard.cxx:335
 AliJCard.cxx:336
 AliJCard.cxx:337
 AliJCard.cxx:338
 AliJCard.cxx:339
 AliJCard.cxx:340
 AliJCard.cxx:341
 AliJCard.cxx:342
 AliJCard.cxx:343
 AliJCard.cxx:344
 AliJCard.cxx:345
 AliJCard.cxx:346
 AliJCard.cxx:347
 AliJCard.cxx:348
 AliJCard.cxx:349
 AliJCard.cxx:350
 AliJCard.cxx:351
 AliJCard.cxx:352
 AliJCard.cxx:353
 AliJCard.cxx:354