+AliExternalTrackParam *AliTPCcalibCosmic::Invert(AliExternalTrackParam *input)
+{
+ //
+ // Invert paramerameter - not covariance yet
+ //
+ AliExternalTrackParam *output = new AliExternalTrackParam(*input);
+ Double_t * param = (Double_t*)output->GetParameter();
+ param[0]*=-1;
+ param[3]*=-1;
+ param[4]*=-1;
+ //
+ return output;
+}
+
+/*
+
+void Init(){
+
+.x ~/UliStyle.C
+.x ~/rootlogon.C
+gSystem->Load("libSTAT.so");
+gSystem->Load("libANALYSIS");
+gSystem->Load("libTPCcalib");
+gSystem->AddIncludePath("-I$ALICE_ROOT/TPC/macros");
+
+gROOT->LoadMacro("$ALICE_ROOT/TPC/macros/AliXRDPROOFtoolkit.cxx+")
+AliXRDPROOFtoolkit tool;
+TChain * chain = tool.MakeChain("cosmic.txt","Track0",0,1000000);
+chain->Lookup();
+
+TCut cutT("cutT","abs(Tr1.fP[3]+Tr0.fP[3])<0.01"); // OK
+TCut cutD("cutD","abs(Tr0.fP[0]+Tr1.fP[0])<2"); // OK
+TCut cutP1("cutP1","abs(Tr0.fP[1]-Tr1.fP[1])<4"); // OK
+TCut cutPt("cutPt","abs(Tr1.fP[4]+Tr0.fP[4])<0.1&&abs(Tr0.fP[4])+abs(Tr1.fP[4])<10");
+TCut cutN("cutN","min(Orig0.fTPCncls,Orig1.fTPCncls)>100");
+TCut cutA=cutT+cutD+cutPt+cutN+cutP1;
+
+TCut cutS("cutS","Orig0.fIp.fP[1]*Orig1.fIp.fP[1]>0");
+
+//
+chain->Draw(">>listEL",cutA,"entryList");
+TEntryList *elist = (TEntryList*)gDirectory->Get("listEL");
+chain->SetEntryList(elist);
+//
+chain->Draw(">>listV40Z100","abs(d0)<40&&abs(v01)<100","entryList");
+TEntryList *elistV40Z100 = (TEntryList*)gDirectory->Get("listV40Z100");
+chain->SetEntryList(elistV40Z100);
+
+//
+// Aliases
+//
+chain->SetAlias("side","(-1+(Tr0.fP[1]>0)*2)");
+chain->SetAlias("hpt","abs(Tr0.fP[4])<0.2");
+chain->SetAlias("dtheta","(Tr0.fP[3]+Tr1.fP[3])");
+chain->SetAlias("mtheta","(Tr0.fP[3]-Tr1.fP[3])*0.5")
+chain->SetAlias("sa","(sin(Tr0.fAlpha+0.))");
+chain->SetAlias("ca","(cos(Tr0.fAlpha+0.))");
+
+}
+
+
+*/
+
+
+/*
+void MatchTheta(){
+
+TStatToolkit toolkit;
+Double_t chi2=0;
+Int_t npoints=0;
+TVectorD fitParamA0;
+TVectorD fitParamA1;
+TVectorD fitParamC0;
+TVectorD fitParamC1;
+TMatrixD covMatrix;
+
+
+TString fstring="";
+//
+fstring+="ca++";
+fstring+="sa++";
+fstring+="ca*mtheta++";
+fstring+="sa*mtheta++";
+fstring+="side++";
+fstring+="side*ca++";
+fstring+="side*sa++";
+fstring+="side*ca*mtheta++";
+fstring+="side*sa*mtheta++";
+
+
+TString *strTheta0 = toolkit.FitPlane(chain,"dtheta",fstring->Data(), "hpt"+cutS, chi2,npoints,fitParamA0,covMatrix,0.8);
+chain->SetAlias("dtheta0",strTheta0.Data());
+strTheta0->Tokenize("+")->Print();
+
+
+//fstring+="mtheta++";
+//fstring+="mtheta^2++";
+//fstring+="ca*mtheta^2++";
+//fstring+="sa*mtheta^2++";
+
+
+
+}
+
+*/
+
+
+
+
+/*
+ void PosCorrection()
+
+
+
+
+ TStatToolkit toolkit;
+ Double_t chi2=0;
+ Int_t npoints=0;
+ TVectorD fitParam;
+ TMatrixD covMatrix;
+
+ //Theta
+chain->SetAlias("dthe","(Tr0.fP[3]+Tr1.fP[3])");
+chain->SetAlias("sign","(-1+(Tr0.fP[1]>0)*2)");
+chain->SetAlias("di","(1-abs(Tr0.fP[1])/250)");
+//
+//
+TString strFit="";
+//
+strFit+="sign++"; //1
+strFit+="Tr0.fP[3]++"; //2
+//
+strFit+="sin(Tr0.fAlpha)*(Tr0.fP[1]>0)++"; //3
+strFit+="sin(Tr0.fAlpha)*(Tr0.fP[1]<0)++"; //4
+//
+strFit+="cos(Tr0.fAlpha)*(Tr0.fP[1]>0)++"; //5
+strFit+="cos(Tr0.fAlpha)*(Tr0.fP[1]<0)++"; //6
+//
+strFit+="sin(Tr0.fAlpha)*Tr0.fP[3]++"; //7
+strFit+="cos(Tr0.fAlpha)*Tr0.fP[3]++"; //8
+
+
+ //
+ TString * thetaParam = toolkit.FitPlane(chain,"dthe", strFit.Data(),"1", chi2,npoints,fitParam,covMatrix,0.8,0,10000)
+
+ chain->SetAlias("corTheta",thetaParam->Data());
+ chain->Draw("dthe:Tr0.fP[1]","","",50000);
+
+
+
+*/
+
+
+
+/*
+
+void AliTPCcalibCosmic::dEdxCorrection(){
+ TCut cutT("cutT","abs(Tr1.fP[3]+Tr0.fP[3])<0.01"); // OK
+ TCut cutD("cutD","abs(Tr0.fP[0]+Tr1.fP[0])<2"); // OK
+ TCut cutPt("cutPt","abs(Tr1.fP[4]+Tr0.fP[4])<0.1&&abs(Tr0.fP[4])+abs(Tr1.fP[4])<10");
+ TCut cutN("cutN","min(Orig0.fTPCncls,Orig1.fTPCncls)>100");
+ TCut cutS("cutS","Orig0.fIp.fP[1]*Orig1.fIp.fP[1]>0");
+ TCut cutA=cutT+cutD+cutPt+cutN+cutS;
+
+
+ .x ~/UliStyle.C
+ gSystem->Load("libANALYSIS");
+ gSystem->Load("libTPCcalib");
+ gSystem->AddIncludePath("-I$ALICE_ROOT/TPC/macros");
+ gROOT->LoadMacro("$ALICE_ROOT/TPC/macros/AliXRDPROOFtoolkit.cxx+")
+ AliXRDPROOFtoolkit tool;
+ TChain * chain = tool.MakeChain("cosmic.txt","Track0",0,1000000);
+ chain->Lookup();
+
+ chain->Draw(">>listEL",cutA,"entryList");
+ TEntryList *elist = (TEntryList*)gDirectory->Get("listEL");
+ chain->SetEntryList(elist);
+
+ .x ~/rootlogon.C
+ gSystem->Load("libSTAT.so");
+ TStatToolkit toolkit;
+ Double_t chi2=0;
+ Int_t npoints=0;
+ TVectorD fitParam;
+ TMatrixD covMatrix;
+
+ chain->Draw("Tr0.fP[4]+Tr1.fP[4]","OK"+cutA);
+
+ TString strFit;
+ strFit+="(Tr0.fP[1]/250)++";
+ strFit+="(Tr0.fP[1]/250)^2++";
+ strFit+="(Tr0.fP[3])++";
+ strFit+="(Tr0.fP[3])^2++";
+
+ TString * ptParam = TStatToolkit::FitPlane(chain,"Tr0.fP[4]+Tr1.fP[4]", strFit.Data(),"1", chi2,npoints,fitParam,covMatrix)
+
+
+
+*/
+
+
+/*
+gSystem->Load("libANALYSIS");
+gSystem->Load("libSTAT");
+gSystem->Load("libTPCcalib");
+
+TStatToolkit toolkit;
+Double_t chi2;
+TVectorD fitParam;
+TMatrixD covMatrix;
+Int_t npoints;
+//
+TCut cutT("cutT","abs(Tr1.fP[3]+Tr0.fP[3])<0.03"); // OK
+TCut cutD("cutD","abs(Tr0.fP[0]+Tr1.fP[0])<5"); // OK
+TCut cutPt("cutPt","abs(Tr1.fP[4]+Tr0.fP[4])<0.2&&abs(Tr0.fP[4])+abs(Tr1.fP[4])<10");
+TCut cutN("cutN","min(Orig0.fTPCncls,Orig1.fTPCncls)>110");
+TCut cutA="abs(norm-1)<0.3"+cutT+cutD+cutPt+cutN;
+
+
+
+TTree * chain = Track0;
+
+
+chain->SetAlias("norm","signalTot0.fElements[3]/signalTot1.fElements[3]");
+//
+chain->SetAlias("dr1","(signalTot0.fElements[1]/signalTot0.fElements[3])");
+chain->SetAlias("dr2","(signalTot0.fElements[2]/signalTot0.fElements[3])");
+chain->SetAlias("dr4","(signalTot0.fElements[4]/signalTot0.fElements[3])");
+chain->SetAlias("dr5","(signalTot0.fElements[5]/signalTot0.fElements[3])");
+
+TString fstring="";
+fstring+="dr1++";
+fstring+="dr2++";
+fstring+="dr4++";
+fstring+="dr5++";
+//
+fstring+="dr1*dr2++";
+fstring+="dr1*dr4++";
+fstring+="dr1*dr5++";
+fstring+="dr2*dr4++";
+fstring+="dr2*dr5++";
+fstring+="dr4*dr5++";
+
+
+
+TString *strqdedx = toolkit.FitPlane(chain,"norm",fstring->Data(), cutA, chi2,npoints,fitParam,covMatrix,-1,0,200000);
+
+chain->SetAlias("corQT",strqdedx->Data());
+
+*/
+
+