ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, 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.                  *
 **************************************************************************/

////////////////////////////////////////////////////////////////////////////
//                                                                        //
//  Reconstruction QA                                                     //
//                                                                        //
//  Authors: Yvonne C. Pachmayer <pachmay@physi.uni-heidelberg.de>        //
//                                                                        //
////////////////////////////////////////////////////////////////////////////


#define AliTrackletsinTRD_cxx
#include "AliTrackletsinTRD.h"
#include <TH2.h>
#include <TStyle.h>
#include <TCanvas.h>

void AliTrackletsinTRD::Loop()
{
    //   In a ROOT session, you can do:
    //      Root > .L AliTrackletsinTRD.C
    //      Root > AliTrackletsinTRD t
    //      Root > t.GetEntry(12); // Fill t data members with entry number 12
    //      Root > t.Show();       // Show values of entry 12
    //      Root > t.Show(16);     // Read and show values of entry 16
    //      Root > t.Loop();       // Loop on all entries
    //

    //     This is the loop skeleton where:
    //    jentry is the global entry number in the chain
    //    ientry is the entry number in the current Tree
    //  Note that the argument to GetEntry must be:
    //    jentry for TChain::GetEntry
    //    ientry for TTree::GetEntry and TBranch::GetEntry
    //
    //       To read only selected branches, Insert statements like:
    // METHOD1:
    //    fChain->SetBranchStatus("*",0);  // disable all branches
    //    fChain->SetBranchStatus("branchname",1);  // activate branchname
    // METHOD2: replace line
    //    fChain->GetEntry(jentry);       //read all branches
    //by  b_branchname->GetEntry(ientry); //read only this branch

    gROOT->SetStyle("Plain");
    gStyle->SetPalette(1);


    if (fChain == 0) return;

    // open run loader and load gAlice, kinematics and header
    AliRunLoader* runLoader = AliRunLoader::Open("galice.root");
    if (!runLoader)
    {
        printf("Error: readKine:\nGetting run loader from file \"%s\" failed", filename);
        return;
    }

    runLoader->LoadHeader();
    runLoader->LoadRecPoints("TRD");
    TObjArray *module = new TObjArray();

    runLoader->CdGAFile();

    Int_t nEvents = runLoader->GetNumberOfEvents();
    const Int_t nEventsarray=nEvents;
    AliTRDcluster *cls = 0;

    Double_t x_clus[540][90];
    Double_t y_clus[540][90];

    for(Int_t ev = 0; ev < nEvents - 1; ev++)
    {
        TTree *tree = runLoader->GetTreeR("TRD", 0);
        tree->SetBranchAddress("TRDcluster", &module);

        int N = tree->GetEntries(); // number of chamber, max 540
        // Check number of clusters
        for(Int_t ind = 0; ind < N; ind++)
        {
            tree->GetEntry(ind);
            Int_t m = module->GetEntries();

            for (Int_t j = 0; j < m; j++)    // loop over clusters of one chamber
            {
                if(j>=90) break;
                if (cls != 0) delete cls;
                cls = (AliTRDcluster*)module->At(j);
                x_clus[ind][j]=cls->GetX();
                y_clus[ind][j]=cls->GetY();

            }
        }



        // loop over debug file and analysis

        Float_t xbmin = 0., xbmax = 380.;
        /* // histogram for debugging purpose
        Int_t nxbins = 3000, nybins = 280;
        Float_t ybmin = -70., ybmax = 70.;
        hxy = new TH2F("hxy",";x;y",nxbins,xbmin,xbmax,nybins,ybmin,ybmax);
        */

        Long64_t nentries = fChain->GetEntriesFast();

        Long64_t nbytes = 0, nb = 0;
        Float_t xpos[6];
        Float_t ypos[6];
        Int_t counter_test;
        for (Long64_t jentry=0; jentry<nentries;jentry++) {
            Long64_t ientry = LoadTree(jentry);
            if (ientry < 0) break;
            nb = fChain->GetEntry(jentry);   nbytes += nb;
            xpos[flayer]=fxtrack;
            ypos[flayer]=fytrack;


            if(flayer==5)
            {
                Float_t x[6]= {xpos[0],xpos[1],xpos[2],xpos[3],xpos[4],xpos[5]};
                Float_t y[6]= {ypos[0],ypos[1],ypos[2],ypos[3],ypos[4],ypos[5]};

                gxy = new TGraph(6,x,y);

                TF1 *f1 = new TF1("f1","pol1",xbmin,xbmax);
                gxy->Fit("f1","RQ");
                // resulting function: y=ax+b --> x*f1->GetParameter(1)+f1->GetParameter(0)

                // graph and fit plotting only for checking
                /*
                 c1 = new TCanvas("c1","hough Transform",0,0,800,800);
                 c1->cd(1);
                 hxy->Draw();
                 gxy->SetMarkerStyle(3);
                 gxy->Draw("p");
                 */

                Float_t px;
                Float_t py;

                if(feventcounter==ev)
                {
                    for(Int_t b=0;b<540;b++)
                    {
                        if(b==fdettracklet)
                        {
                            Int_t counter_distcalc;
                            Float_t distance_sum=0;

                            for(Int_t c=0;c<90;c++)
                            {
                                px=0;
                                py=0;

                                px=x_clus[b][c];
                                py=y_clus[b][c];

                                if(px!=0 &&  py!=0)
                                {
                                    // Function to calculate the distance of a point to the above fitted function
                                    Double_t distance = 0;
                                    if((TMath::Sqrt(f1->GetParameter(1)*f1->GetParameter(1)+1))!=0) distance=TMath::Abs(f1->GetParameter(1)*px-py+f1->GetParameter(0))/(TMath::Sqrt(f1->GetParameter(1)*f1->GetParameter(1)+1));
                                    // if(distance<10) cout << eventcounter << " " << b << " " << c << " " <<   distance << endl;
                                    if(distance>0.6 && distance<=2)
                                    {
                                        counter_distcalc++;
                                        distance_sum+=distance;
                                    }
                                }

                            }
                            if(counter_distcalc!=0)
                            {
                                // these are tracks which have additional clusters close by: 0.6 < distance <= 2
                            }
                            else
                            {
                                // these are good tracks no additional clusters close by
                               cout <<" good tracks " <<  endl;
                            }
                            counter_distcalc=0;
                        }
                    }
                }

                if(gxy) delete gxy;
                if(f1) delete f1;
            } // end of 5 layer loop


           


        }  // end loop over debug file and analysis

        runLoader->GetNextEvent();
    }

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